From 0cdb964b3212ef0925cd1ecd1d203625f15ba108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Jes=C3=BAs?= Date: Wed, 15 Nov 2023 18:01:56 +0100 Subject: [PATCH] fix (JupyterHub): Removed conda. --- jupyterhub/tensorflow-gpu/Dockerfile | 103 +++++++-------------------- 1 file changed, 25 insertions(+), 78 deletions(-) diff --git a/jupyterhub/tensorflow-gpu/Dockerfile b/jupyterhub/tensorflow-gpu/Dockerfile index 993a440..7bed2ed 100644 --- a/jupyterhub/tensorflow-gpu/Dockerfile +++ b/jupyterhub/tensorflow-gpu/Dockerfile @@ -19,17 +19,26 @@ ARG NB_USER="ertis" ARG NB_UID="1000" ARG NB_GID="100" +# Pin python version here, or set it to "default" +ARG PYTHON_VERSION=3.11 + + +ENV DEBIAN_FRONTEND noninteractive + # Configure environment -ENV CONDA_DIR=/opt/conda \ - SHELL=/bin/bash \ +ENV SHELL=/bin/bash \ NB_USER="${NB_USER}" \ NB_UID=${NB_UID} \ NB_GID=${NB_GID} \ 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}" + LANGUAGE=en_US.UTF-8 \ + PATH="${PATH}:/home/${NB_USER}/.local/bin" + + +ENV HOME="/home/${NB_USER}" + +ENV JUPYTER_PORT=8888 SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -37,7 +46,6 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] USER root COPY --from=foundation /usr/local/bin/fix-permissions /usr/local/bin/ -COPY --from=foundation --chown="${NB_UID}:${NB_GID}" "${CONDA_DIR}/.condarc" "${CONDA_DIR}/" COPY --from=foundation /usr/local/bin/start.sh /usr/local/bin/ COPY run-hooks.sh /usr/local/bin/run-hooks.sh @@ -49,7 +57,6 @@ COPY start-notebook.py start-singleuser.py /usr/local/bin/ COPY jupyter_server_config.py /etc/jupyter/jupyter_server_config.py COPY docker_healthcheck.py /etc/jupyter/docker_healthcheck.py -ENV DEBIAN_FRONTEND noninteractive RUN apt-get update --yes && \ apt-get upgrade --yes && \ @@ -87,80 +94,40 @@ RUN mkdir -p /etc/apt/keyrings && \ texlive-fonts-recommended \ texlive-plain-generic \ fonts-liberation \ - pandoc && \ + pandoc \ + python3-pip && \ apt-get clean && rm -rf /var/lib/apt/lists/* # Copy a script that we will use to correct permissions after running certain commands RUN chmod a+rx /usr/local/bin/fix-permissions -# Enable prompt color in the skeleton .bashrc before creating the default NB_USER -# hadolint ignore=SC2016 -RUN sed -i 's/^#force_color_prompt=yes/force_color_prompt=yes/' /etc/skel/.bashrc && \ - # Add call to conda init script see https://stackoverflow.com/a/58081608/4413446 - echo 'eval "$(command conda shell.bash hook 2> /dev/null)"' >> /etc/skel/.bashrc - -# Create NB_USER with name jovyan user with UID=1000 and in the 'users' group -# and make sure these dirs are writable by the `users` group. RUN echo "auth requisite pam_deny.so" >> /etc/pam.d/su && \ sed -i.bak -e 's/^%admin/#%admin/' /etc/sudoers && \ sed -i.bak -e 's/^%sudo/#%sudo/' /etc/sudoers && \ useradd --no-log-init --create-home --shell /bin/bash --uid "${NB_UID}" --no-user-group "${NB_USER}" && \ - mkdir -p "${CONDA_DIR}" && \ - chown "${NB_USER}:${NB_GID}" "${CONDA_DIR}" && \ chmod g+w /etc/passwd && \ - fix-permissions "${CONDA_DIR}" && \ fix-permissions "/home/${NB_USER}" USER ${NB_UID} -# Pin python version here, or set it to "default" -ARG PYTHON_VERSION=3.11 - # Setup work directory for backward-compatibility RUN mkdir "/home/${NB_USER}/work" && \ fix-permissions "/home/${NB_USER}" -# Download and install Micromamba, and initialize Conda prefix. -# -# Similar projects using Micromamba: -# - Micromamba-Docker: -# - repo2docker: -# Install Python, Mamba and jupyter_core -# Cleanup temporary files and remove Micromamba -# Correct permissions -# Do all this in a single RUN command to avoid duplicating all of the -# files across image layers when the permissions change WORKDIR /tmp -RUN set -x && \ - arch=$(uname -m) && \ - if [ "${arch}" = "x86_64" ]; then \ - # Should be simpler, see - arch="64"; \ - fi && \ - wget --progress=dot:giga -O /tmp/micromamba.tar.bz2 \ - "https://micromamba.snakepit.net/api/micromamba/linux-${arch}/latest" && \ - tar -xvjf /tmp/micromamba.tar.bz2 --strip-components=1 bin/micromamba && \ - rm /tmp/micromamba.tar.bz2 && \ - PYTHON_SPECIFIER="python=${PYTHON_VERSION}" && \ - if [[ "${PYTHON_VERSION}" == "default" ]]; then PYTHON_SPECIFIER="python"; fi && \ - # Install the packages - ./micromamba install \ - --root-prefix="${CONDA_DIR}" \ - --prefix="${CONDA_DIR}" \ - --yes \ - "${PYTHON_SPECIFIER}" \ - 'mamba' \ - 'jupyter_core' && \ - rm micromamba && \ - # Pin major.minor version of python - mamba list python | grep '^python ' | tr -s ' ' | cut -d ' ' -f 1,2 >> "${CONDA_DIR}/conda-meta/pinned" && \ - mamba clean --all -f -y && \ - fix-permissions "${CONDA_DIR}" && \ + +RUN pip install jupyter-core \ + jupyterlab \ + notebook \ + jupyterhub \ + nbclassic && \ + jupyter server --generate-config && \ + jupyter lab clean && \ + rm -rf "/home/${NB_USER}/.cache/yarn" && \ fix-permissions "/home/${NB_USER}" # Configure container startup ENTRYPOINT ["tini", "-g", "--"] -# CMD ["start.sh"] USER root @@ -170,27 +137,7 @@ RUN mkdir /usr/local/bin/start-notebook.d && \ USER ${NB_UID} -# Install JupyterLab, Jupyter Notebook, JupyterHub and NBClassic -# Generate a Jupyter 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 -WORKDIR /tmp -RUN mamba install --yes \ - 'jupyterlab' \ - 'notebook' \ - 'jupyterhub' \ - 'nbclassic' && \ - jupyter server --generate-config && \ - mamba clean --all -f -y && \ - npm cache clean --force && \ - jupyter lab clean && \ - rm -rf "/home/${NB_USER}/.cache/yarn" && \ - fix-permissions "${CONDA_DIR}" && \ - fix-permissions "/home/${NB_USER}" -ENV JUPYTER_PORT=8888 EXPOSE $JUPYTER_PORT # Configure container startup