[racket-users] Re: Installing Racket Package `gregor` inside a Docker container

2018-01-01 Thread Zelphir Kaltstahl
I finally managed to do what I want using the installer approach from Jack 
Firth's Dockerfile:

~~

# DEBIAN IMAGE #

FROM debian:jessie


# META #

MAINTAINER "Zelphir Kaltstahl "

#
# ENVIRONMENT VARIABLES #
#
ENV SHELL=/bin/bash
ARG ROOT_USER=root
ARG DEBIAN_FRONTEND=noninteractive
ARG NON_PRIVILEGED_USER=app
ARG NON_PRIVILEGED_USER_GROUP=app
ARG NON_PRIVILEGED_USER_PASSWORD="yourpw"
ENV HOME="/home/${NON_PRIVILEGED_USER}"

###
# SYSTEM PACKAGES #
###
USER $ROOT_USER
RUN apt-get update
RUN apt-get --yes upgrade
# --no-install-recommends\
RUN apt-get --yes dist-upgrade \
 && apt-get install -y \
wget \
sqlite3 \
openssl \
ca-certificates \
sudo \
locales \
git \
bzip2 \
unzip
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
##
# SET LOCALE #
##
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && 
\
echo 'LANG="en_US.UTF-8"' > /etc/default/locale && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=en_US.UTF-8

#
# ADDING A USER #
#
# For more info please check useradd --help or man useradd.
RUN groupadd -r $NON_PRIVILEGED_USER_GROUP -g 1000 \
 && useradd \
--uid 1000 \
--system \
--gid $NON_PRIVILEGED_USER_GROUP \
--create-home \
--home-dir /home/$NON_PRIVILEGED_USER/ \
--shell /bin/bash \
--comment "non-privileged user" \
$NON_PRIVILEGED_USER \
 && chmod 755 /home/$NON_PRIVILEGED_USER/ \
 && echo "$NON_PRIVILEGED_USER:$NON_PRIVILEGED_USER_PASSWORD" | chpasswd

###
# INITIAL WORKDIR #
###
WORKDIR $HOME

##
# RACKET #
##
USER $NON_PRIVILEGED_USER

ARG 
RACKET_INSTALLER_CHECKSUM="85cbff83f202293b6cd4c3c58e97919fd75a963177ae815a0e9186886ca4fc54"
ARG RACKET_INSTALLER_FILENAME="racket-install.sh"
ARG RACKET_VERSION="6.11"
ARG 
RACKET_INSTALLER_URL="https://mirror.racket-lang.org/installers/${RACKET_VERSION}/racket-minimal-${RACKET_VERSION}-x86_64-linux.sh;
# download
RUN wget --output-document=$RACKET_INSTALLER_FILENAME -q 
$RACKET_INSTALLER_URL \
 && printf "${RACKET_INSTALLER_CHECKSUM} ${RACKET_INSTALLER_FILENAME}" | 
sha256sum -c - \
 && printf "no\n3\n" | /bin/bash racket-install.sh
# cleanup
RUN rm racket-install.sh
# setup
WORKDIR racket/bin
RUN chmod +x racket
RUN chmod +x raco
RUN printf "b"
ENV PATH=$HOME/racket/bin:$PATH
RUN printf "%s\n" $PATH
# RUN which racket
RUN raco setup
RUN raco pkg config --set catalogs\
"https://download.racket-lang.org/releases/$RACKET_VERSION/catalog/"\
"https://pkg-build.racket-lang.org/server/built/catalog/"\
"https://pkgs.racket-lang.org"\
"https://planet-compats.racket-lang.org;

###
# RACKET PACKAGES #
###
USER $NON_PRIVILEGED_USER
RUN yes | raco pkg install --auto --jobs 4 markdown
RUN yes | raco pkg install --auto --jobs 4 yaml
RUN yes | raco pkg install --auto --jobs 4 pollen
RUN yes | raco pkg install --auto --jobs 4 gregor
RUN yes | raco pkg install --auto --jobs 4 sha

#
# INSTALL MINICONDA #
#
USER $NON_PRIVILEGED_USER
WORKDIR $HOME

ARG MINICONDA_VERSION="4.3.30"
ENV 
MINICONDA_SHA256SUM="66c822dfe76636b4cc2ae5604816e0e723aa01620f50087f06410ecf5bfdf38c"
ENV CONDA_DIR $HOME/anaconda
ENV PATH $CONDA_DIR/bin:$PATH

RUN mkdir --parents $CONDA_DIR \
 && wget --quiet 
https://repo.continuum.io/miniconda/Miniconda3-$MINICONDA_VERSION-Linux-x86_64.sh
 
\
 && echo "${MINICONDA_SHA256SUM} 
Miniconda3-$MINICONDA_VERSION-Linux-x86_64.sh" | sha256sum -c - \
 && /bin/bash Miniconda3-$MINICONDA_VERSION-Linux-x86_64.sh -f -b -p 
$CONDA_DIR \
 && rm Miniconda3-$MINICONDA_VERSION-Linux-x86_64.sh \
 && $CONDA_DIR/bin/conda config --system --add channels conda-forge \
 && $CONDA_DIR/bin/conda config --system --set auto_update_conda false \
 && conda clean -tips --yes

###
# PYTHON PACKAGES #
###
RUN conda install --yes --quiet pygments

#
# COPY BLOG #
#
COPY blog $HOME/blog


# FINALIZE #

USER $NON_PRIVILEGED_USER
WORKDIR $HOME/blog
# ENTRYPOINT ["tini", "--"]

# TODO: Why are variables not working in the CMD directive of Dockerfiles?
CMD ["/home/app/racket/bin/racket", "server.rkt"]
~~

Note that I had to switch to `printf` instead of `echo` for the Racket 
installer, because of problems when using `echo`. It would always choose 
`yes` and the default option, when I used `echo`. Or maybe that was when I 
tried it with Alpine and it only got carried over to the Debian attempt.

I am not sure why I could not use environment variables in the `CMD` 
directive of the Dockerfile, so there the user name should be adapted.

I installed 

[racket-users] Re: Installing Racket Package `gregor` inside a Docker container

2017-12-29 Thread Jack Firth
With the Docker images I use for Racket, gregor installs fine. I ran the 
command `docker run -it jackfirth/racket:6.11 raco pkg install --auto 
gregor` and it completed without error. You can find the dockerfile being 
used to produce those images in the Github repo 
. 
Maybe there's something off with the dockerfile you're using?

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[racket-users] Re: Installing Racket Package `gregor` inside a Docker container

2017-12-27 Thread Alexander McLin
I don't have much to add but wanted to note that the problem appears to be 
in rendering grengor's documentation. The package itself may be installed 
fine, just not its associated documentation. You can test to verify if 
package is installed by querying via raco pkg or just requiring gregor in a 
test file and running it.

Depending on your needs, it may not be a big deal if your Docker doesn't 
have the package documentation available.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.