mirror of
https://github.com/jupyter/docker-stacks.git
synced 2025-10-15 14:02:58 +00:00

base-notebook defines environment variables for the Conda install path and the notebook user. However, in some instances, these locations were still hardcoded. Let’s use the variables instead.
91 lines
2.9 KiB
Docker
91 lines
2.9 KiB
Docker
# Copyright (c) Jupyter Development Team.
|
|
# Distributed under the terms of the Modified BSD License.
|
|
|
|
# Debian Jessie image released 2016 May 03.
|
|
FROM debian@sha256:32a225e412babcd54c0ea777846183c61003d125278882873fb2bc97f9057c51
|
|
|
|
MAINTAINER Jupyter Project <jupyter@googlegroups.com>
|
|
|
|
USER root
|
|
|
|
# Install all OS dependencies for notebook server that starts but lacks all
|
|
# features (e.g., download as all possible file formats)
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
RUN apt-get update && apt-get install -yq --no-install-recommends \
|
|
wget \
|
|
bzip2 \
|
|
ca-certificates \
|
|
sudo \
|
|
locales \
|
|
&& apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
|
|
locale-gen
|
|
|
|
# Install Tini
|
|
RUN wget --quiet https://github.com/krallin/tini/releases/download/v0.9.0/tini && \
|
|
echo "faafbfb5b079303691a939a747d7f60591f2143164093727e870b289a44d9872 *tini" | sha256sum -c - && \
|
|
mv tini /usr/local/bin/tini && \
|
|
chmod +x /usr/local/bin/tini
|
|
|
|
# Configure environment
|
|
ENV CONDA_DIR /opt/conda
|
|
ENV PATH $CONDA_DIR/bin:$PATH
|
|
ENV SHELL /bin/bash
|
|
ENV NB_USER jovyan
|
|
ENV NB_UID 1000
|
|
ENV HOME /home/$NB_USER
|
|
ENV LC_ALL en_US.UTF-8
|
|
ENV LANG en_US.UTF-8
|
|
ENV LANGUAGE en_US.UTF-8
|
|
|
|
# Create jovyan user with UID=1000 and in the 'users' group
|
|
RUN useradd -m -s /bin/bash -N -u $NB_UID $NB_USER && \
|
|
mkdir -p $CONDA_DIR && \
|
|
chown $NB_USER $CONDA_DIR
|
|
|
|
USER $NB_USER
|
|
|
|
# Setup jovyan home directory
|
|
RUN mkdir /home/$NB_USER/work && \
|
|
mkdir /home/$NB_USER/.jupyter && \
|
|
mkdir -p -m 700 /home/$NB_USER/.local/share/jupyter && \
|
|
echo "cacert=/etc/ssl/certs/ca-certificates.crt" > /home/$NB_USER/.curlrc
|
|
|
|
# Install conda as jovyan
|
|
RUN cd /tmp && \
|
|
mkdir -p $CONDA_DIR && \
|
|
wget --quiet https://repo.continuum.io/miniconda/Miniconda3-3.19.0-Linux-x86_64.sh && \
|
|
echo "9ea57c0fdf481acf89d816184f969b04bc44dea27b258c4e86b1e3a25ff26aa0 *Miniconda3-3.19.0-Linux-x86_64.sh" | sha256sum -c - && \
|
|
/bin/bash Miniconda3-3.19.0-Linux-x86_64.sh -f -b -p $CONDA_DIR && \
|
|
rm Miniconda3-3.19.0-Linux-x86_64.sh && \
|
|
$CONDA_DIR/bin/conda install --quiet --yes conda==3.19.1 && \
|
|
$CONDA_DIR/bin/conda config --system --add channels conda-forge && \
|
|
conda clean -tipsy
|
|
|
|
# Install Jupyter notebook as jovyan
|
|
RUN conda install --quiet --yes \
|
|
'notebook=4.2*' \
|
|
&& conda clean -tipsy
|
|
|
|
# Install JupyterHub to get the jupyterhub-singleuser startup script
|
|
RUN pip --no-cache-dir install 'jupyterhub==0.5'
|
|
|
|
USER root
|
|
|
|
# Configure container startup as root
|
|
EXPOSE 8888
|
|
WORKDIR /home/$NB_USER/work
|
|
ENTRYPOINT ["tini", "--"]
|
|
CMD ["start-notebook.sh"]
|
|
|
|
# Add local files as late as possible to avoid cache busting
|
|
COPY start-notebook.sh /usr/local/bin/
|
|
COPY start-singleuser.sh /usr/local/bin/
|
|
COPY jupyter_notebook_config.py /home/$NB_USER/.jupyter/
|
|
RUN chown -R $NB_USER:users /home/$NB_USER/.jupyter
|
|
|
|
# Switch back to jovyan to avoid accidental container runs as root
|
|
USER $NB_USER
|