mirror of
https://github.com/jupyter/docker-stacks.git
synced 2025-10-17 06:52:56 +00:00

Adds the initial creation of the configuration file jupyter_notebook_config.json to the image. This file was missing as reported in issue #639 and caused an error when trying to set a new password via the Web interface. Bumps the version of Jupyter Notebook to 5.6 Updates Apache Mirror URL because the current causes build timeouts The mirror used now (mirrors.ukfast.co.uk) is fast enough and does not point to an ad site and is already used in a different Dockerfile within this repository.
119 lines
4.1 KiB
Docker
119 lines
4.1 KiB
Docker
# Copyright (c) Jupyter Development Team.
|
|
# Distributed under the terms of the Modified BSD License.
|
|
|
|
# Ubuntu 18.04 (bionic) from 2018-05-26
|
|
# https://github.com/docker-library/official-images/commit/aac6a45b9eb2bffb8102353c350d341a410fb169
|
|
FROM ubuntu:bionic-20180526@sha256:c8c275751219dadad8fa56b3ac41ca6cb22219ff117ca98fe82b42f24e1ba64e
|
|
|
|
LABEL 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 -yq dist-upgrade \
|
|
&& apt-get install -yq --no-install-recommends \
|
|
wget \
|
|
bzip2 \
|
|
ca-certificates \
|
|
sudo \
|
|
locales \
|
|
fonts-liberation \
|
|
&& 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.18.0/tini && \
|
|
echo "12d20136605531b09a2c2dac02ccee85e1b874eb322ef6baf7561cd93f93c855 *tini" | sha256sum -c - && \
|
|
mv tini /usr/local/bin/tini && \
|
|
chmod +x /usr/local/bin/tini
|
|
|
|
# Configure environment
|
|
ENV CONDA_DIR=/opt/conda \
|
|
SHELL=/bin/bash \
|
|
NB_USER=jovyan \
|
|
NB_UID=1000 \
|
|
NB_GID=100 \
|
|
LC_ALL=en_US.UTF-8 \
|
|
LANG=en_US.UTF-8 \
|
|
LANGUAGE=en_US.UTF-8
|
|
ENV PATH=$CONDA_DIR/bin:$PATH \
|
|
HOME=/home/$NB_USER
|
|
|
|
ADD fix-permissions /usr/local/bin/fix-permissions
|
|
# Create jovyan user with UID=1000 and in the 'users' group
|
|
# and make sure these dirs are writable by the `users` group.
|
|
RUN groupadd wheel -g 11 && \
|
|
echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su && \
|
|
useradd -m -s /bin/bash -N -u $NB_UID $NB_USER && \
|
|
mkdir -p $CONDA_DIR && \
|
|
chown $NB_USER:$NB_GID $CONDA_DIR && \
|
|
chmod g+w /etc/passwd && \
|
|
fix-permissions $HOME && \
|
|
fix-permissions $CONDA_DIR
|
|
|
|
USER $NB_UID
|
|
|
|
# Setup work directory for backward-compatibility
|
|
RUN mkdir /home/$NB_USER/work && \
|
|
fix-permissions /home/$NB_USER
|
|
|
|
# Install conda as jovyan and check the md5 sum provided on the download site
|
|
ENV MINICONDA_VERSION 4.5.4
|
|
RUN cd /tmp && \
|
|
wget --quiet https://repo.continuum.io/miniconda/Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh && \
|
|
echo "a946ea1d0c4a642ddf0c3a26a18bb16d *Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh" | md5sum -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 --prepend channels conda-forge && \
|
|
$CONDA_DIR/bin/conda config --system --set auto_update_conda false && \
|
|
$CONDA_DIR/bin/conda config --system --set show_channel_urls true && \
|
|
$CONDA_DIR/bin/conda install --quiet --yes conda="${MINICONDA_VERSION%.*}.*" && \
|
|
$CONDA_DIR/bin/conda update --all --quiet --yes && \
|
|
conda clean -tipsy && \
|
|
rm -rf /home/$NB_USER/.cache/yarn && \
|
|
fix-permissions $CONDA_DIR && \
|
|
fix-permissions /home/$NB_USER
|
|
|
|
# Install Jupyter Notebook, Lab, and Hub
|
|
# Generate a notebook server config
|
|
# Cleanup temporary files
|
|
# Correct permissions
|
|
# Do all this in a single RUN command to avoid duplicating all of the
|
|
# files across image layers when the permissions change
|
|
RUN conda install --quiet --yes \
|
|
'notebook=5.6.*' \
|
|
'jupyterhub=0.8.*' \
|
|
'jupyterlab=0.32.*' && \
|
|
conda clean -tipsy && \
|
|
jupyter labextension install @jupyterlab/hub-extension@^0.8.1 && \
|
|
npm cache clean --force && \
|
|
jupyter notebook --generate-config && \
|
|
rm -rf $CONDA_DIR/share/jupyter/lab/staging && \
|
|
rm -rf /home/$NB_USER/.cache/yarn && \
|
|
fix-permissions $CONDA_DIR && \
|
|
fix-permissions /home/$NB_USER
|
|
|
|
USER root
|
|
|
|
EXPOSE 8888
|
|
WORKDIR $HOME
|
|
|
|
# Configure container startup
|
|
ENTRYPOINT ["tini", "-g", "--"]
|
|
CMD ["start-notebook.sh"]
|
|
|
|
# Add local files as late as possible to avoid cache busting
|
|
COPY start.sh /usr/local/bin/
|
|
COPY start-notebook.sh /usr/local/bin/
|
|
COPY start-singleuser.sh /usr/local/bin/
|
|
COPY jupyter_notebook_config.py /etc/jupyter/
|
|
RUN fix-permissions /etc/jupyter/
|
|
|
|
# Switch back to jovyan to avoid accidental container runs as root
|
|
USER $NB_UID
|