mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-17 15:03:02 +00:00

- When the Dockerfile was turned into a multi-stage build, it seems the share/ directory was not copied to the final image. This resulted in certain components (static/components/, static/css/) being missing, which resulted in the JupyterHub share directory not being findable (in jupyterhub/_data.py). This led to all kinds of weird havoc, like templates not being findable (#2852). - I am still unsure if this is the right fix, please check this well. - Closes: #2852
105 lines
2.6 KiB
Docker
105 lines
2.6 KiB
Docker
# An incomplete base Docker image for running JupyterHub
|
|
#
|
|
# Add your configuration to create a complete derivative Docker image.
|
|
#
|
|
# Include your configuration settings by starting with one of two options:
|
|
#
|
|
# Option 1:
|
|
#
|
|
# FROM jupyterhub/jupyterhub:latest
|
|
#
|
|
# And put your configuration file jupyterhub_config.py in /srv/jupyterhub/jupyterhub_config.py.
|
|
#
|
|
# Option 2:
|
|
#
|
|
# Or you can create your jupyterhub config and database on the host machine, and mount it with:
|
|
#
|
|
# docker run -v $PWD:/srv/jupyterhub -t jupyterhub/jupyterhub
|
|
#
|
|
# NOTE
|
|
# If you base on jupyterhub/jupyterhub-onbuild
|
|
# your jupyterhub_config.py will be added automatically
|
|
# from your docker directory.
|
|
|
|
# https://github.com/tianon/docker-brew-ubuntu-core/commit/d4313e13366d24a97bd178db4450f63e221803f1
|
|
ARG BASE_IMAGE=ubuntu:bionic-20191029@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
|
|
FROM $BASE_IMAGE AS builder
|
|
|
|
USER root
|
|
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
RUN apt-get update \
|
|
&& apt-get install -yq --no-install-recommends \
|
|
build-essential \
|
|
ca-certificates \
|
|
locales \
|
|
python3-dev \
|
|
python3-pip \
|
|
python3-pycurl \
|
|
nodejs \
|
|
npm \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# copy only what we need to avoid unnecessary rebuilds
|
|
COPY package.json \
|
|
pyproject.toml \
|
|
README.md \
|
|
requirements.txt \
|
|
setup.py \
|
|
/src/jupyterhub/
|
|
COPY jupyterhub/ /src/jupyterhub/jupyterhub
|
|
COPY share/ /src/jupyterhub/share
|
|
|
|
WORKDIR /src/jupyterhub
|
|
RUN python3 -m pip install --upgrade setuptools pip wheel
|
|
RUN python3 -m pip wheel -v --wheel-dir wheelhouse .
|
|
|
|
|
|
FROM $BASE_IMAGE
|
|
|
|
USER root
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -yq --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
gnupg \
|
|
locales \
|
|
python3-pip \
|
|
python3-pycurl \
|
|
nodejs \
|
|
npm \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ENV SHELL=/bin/bash \
|
|
LC_ALL=en_US.UTF-8 \
|
|
LANG=en_US.UTF-8 \
|
|
LANGUAGE=en_US.UTF-8
|
|
|
|
RUN locale-gen $LC_ALL
|
|
|
|
# always make sure pip is up to date!
|
|
RUN python3 -m pip install --no-cache --upgrade setuptools pip
|
|
|
|
RUN npm install -g configurable-http-proxy@^4.2.0 \
|
|
&& rm -rf ~/.npm
|
|
|
|
# install the wheels we built in the first stage
|
|
COPY --from=builder /src/jupyterhub/wheelhouse /tmp/wheelhouse
|
|
COPY --from=builder /src/jupyterhub/share /src/jupyterhub/share
|
|
RUN python3 -m pip install --no-cache /tmp/wheelhouse/*
|
|
|
|
RUN mkdir -p /srv/jupyterhub/
|
|
WORKDIR /srv/jupyterhub/
|
|
|
|
EXPOSE 8000
|
|
|
|
LABEL maintainer="Jupyter Project <jupyter@googlegroups.com>"
|
|
LABEL org.jupyter.service="jupyterhub"
|
|
|
|
CMD ["jupyterhub"]
|