From 9098e0c3aae7569ea3fbcad3eeeaea11bbf8b447 Mon Sep 17 00:00:00 2001 From: maltegrosse Date: Fri, 27 Jan 2023 09:45:15 +0100 Subject: [PATCH] switched 11.8 --- Dockerfile | 403 +----------------- old/Dockerfile | 393 +++++++++++++++++ fix-permissions => old/fix-permissions | 0 initial-condarc => old/initial-condarc | 0 .../jupyter_notebook_config.json | 0 .../jupyter_server_config.py | 0 start-notebook.sh => old/start-notebook.sh | 0 .../start-singleuser.sh | 0 start.sh => old/start.sh | 0 9 files changed, 409 insertions(+), 387 deletions(-) create mode 100644 old/Dockerfile rename fix-permissions => old/fix-permissions (100%) rename initial-condarc => old/initial-condarc (100%) rename jupyter_notebook_config.json => old/jupyter_notebook_config.json (100%) rename jupyter_server_config.py => old/jupyter_server_config.py (100%) rename start-notebook.sh => old/start-notebook.sh (100%) rename start-singleuser.sh => old/start-singleuser.sh (100%) rename start.sh => old/start.sh (100%) diff --git a/Dockerfile b/Dockerfile index 6f08cac..37e8c6e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,393 +1,22 @@ -ARG NVIDIA_IMAGE=nvcr.io/nvidia/tensorflow:22.12-tf2-py3 - -FROM ${NVIDIA_IMAGE} -############################################################################ -#################### Dependency: jupyter/base-image ######################## -############################################################################ - -#### copied from https://github.com/jupyter/docker-stacks/tree/main/docker-stacks-foundation - -# Copyright (c) Jupyter Development Team. -# Distributed under the terms of the Modified BSD License. - -# Ubuntu 22.04 (jammy) -# https://hub.docker.com/_/ubuntu/tags?page=1&name=jammy -ARG ROOT_CONTAINER=ubuntu:22.04 - - -LABEL maintainer="Jupyter Project " -ARG NB_USER="jovyan" -ARG NB_UID="1000" -ARG NB_GID="100" - -# Fix: https://github.com/hadolint/hadolint/wiki/DL4006 -# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014 -SHELL ["/bin/bash", "-o", "pipefail", "-c"] +FROM git.sandbox.iuk.hdm-stuttgart.de/grosse/jupyterlab-datascience:latest USER root +RUN apt-get update && apt upgrade -y && apt-get install -y --no-install-recommends \ + build-essential gnupg2 curl ca-certificates && \ + curl -fsSLO https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb && \ + dpkg -i cuda-keyring_1.0-1_all.deb && \ + apt-get purge --autoremove -y curl \ + && rm -rf /var/lib/apt/lists/* -# 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 --yes && \ - # - apt-get upgrade is run to patch known vulnerabilities in apt-get packages as - # the ubuntu base image is rebuilt too seldom sometimes (less than once a month) - apt-get upgrade --yes && \ - apt-get install --yes --no-install-recommends \ - # - bzip2 is necessary to extract the micromamba executable. - bzip2 \ - ca-certificates \ - locales \ - sudo \ - # - tini is installed as a helpful container entrypoint that reaps zombie - # processes and such of the actual executable we want to start, see - # https://github.com/krallin/tini#why-tini for details. - tini \ - wget && \ - apt-get clean && rm -rf /var/lib/apt/lists/* && \ - echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen +RUN apt-get update && apt-get install -y --no-install-recommends \ + cuda-11-8 cuda-cudart-11-8 nvidia-gds-11-8 cuda-toolkit-11-8 cuda-libraries-11-8 -# Configure environment -ENV CONDA_DIR=/opt/conda \ - 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}" +#RUN wget https://developer.download.nvidia.com/compute/redist/cudnn/v8.7.0/local_installers/11.8/cudnn-local-repo-ubuntu2204-8.7.0.84_1.0-1_amd64.deb +#RUN dpkg -i cudnn-local-repo-ubuntu2204-8.7.0.84_1.0-1_amd64.deb && rm -f cudnn-local-repo-ubuntu2204-8.7.0.84_1.0-1_amd64.deb +RUN apt update && apt install -y libcudnn8 -# Copy a script that we will use to correct permissions after running certain commands -COPY fix-permissions /usr/local/bin/fix-permissions -RUN chmod a+rx /usr/local/bin/fix-permissions +#RUN pip install tensorflow +RUN pip install --force-reinstall tf-nightly==2.12.0.dev20230126 +USER jovyan -# 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 -l -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} - -# Pin python version here, or set it to "default" -ARG PYTHON_VERSION=3.10 - -# 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 - -COPY --chown="${NB_UID}:${NB_GID}" initial-condarc "${CONDA_DIR}/.condarc" -WORKDIR /tmp -RUN set -x && \ - arch=$(uname -m) && \ - if [ "${arch}" = "x86_64" ]; then \ - # Should be simpler, see - arch="64"; \ - fi && \ - wget -qO /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}" && \ - fix-permissions "/home/${NB_USER}" - -EXPOSE 8888 - -# Configure container startup -ENTRYPOINT ["tini", "-g", "--"] -CMD ["start-notebook.sh"] - -# Copy local files as late as possible to avoid cache busting -COPY start.sh start-notebook.sh start-singleuser.sh /usr/local/bin/ -# Currently need to have both jupyter_notebook_config and jupyter_server_config to support classic and lab -COPY jupyter_server_config.py /etc/jupyter/ - -# Fix permissions on /etc/jupyter as root -USER root - -# Legacy for Jupyter Notebook Server, see: [#1205](https://github.com/jupyter/docker-stacks/issues/1205) -RUN sed -re "s/c.ServerApp/c.NotebookApp/g" \ - /etc/jupyter/jupyter_server_config.py > /etc/jupyter/jupyter_notebook_config.py && \ - fix-permissions /etc/jupyter/ - -# HEALTHCHECK documentation: https://docs.docker.com/engine/reference/builder/#healthcheck -# This healtcheck works well for `lab`, `notebook`, `nbclassic`, `server` and `retro` jupyter commands -# https://github.com/jupyter/docker-stacks/issues/915#issuecomment-1068528799 -HEALTHCHECK --interval=15s --timeout=3s --start-period=5s --retries=3 \ - CMD wget -O- --no-verbose --tries=1 --no-check-certificate \ - http${GEN_CERT:+s}://localhost:8888${JUPYTERHUB_SERVICE_PREFIX:-/}api || exit 1 - -# Switch back to jovyan to avoid accidental container runs as root -USER ${NB_UID} - -WORKDIR "${HOME}" - - -############################################################################ -################# Dependency: jupyter/minimal-notebook ##################### -############################################################################ - -# Copyright (c) Jupyter Development Team. -# Distributed under the terms of the Modified BSD License. -ARG OWNER=jupyter - -LABEL maintainer="Jupyter Project " - -# Fix: https://github.com/hadolint/hadolint/wiki/DL4006 -# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014 -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -USER root - -# Install all OS dependencies for fully functional notebook server -RUN apt-get update --yes && \ - apt-get install --yes --no-install-recommends \ - # Common useful utilities - git \ - nano-tiny \ - tzdata \ - unzip \ - vim-tiny \ - # Inkscape is installed to be able to convert SVG files - inkscape \ - # git-over-ssh - openssh-client \ - # less is needed to run help in R - # see: https://github.com/jupyter/docker-stacks/issues/1588 - less \ - # nbconvert dependencies - # https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex - texlive-xetex \ - texlive-fonts-recommended \ - texlive-plain-generic && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -# Create alternative for nano -> nano-tiny -RUN update-alternatives --install /usr/bin/nano nano /bin/nano-tiny 10 - -# Switch back to jovyan to avoid accidental container runs as root -USER ${NB_UID} - -############################################################################ -################# Dependency: jupyter/scipy-notebook ####################### -############################################################################ - -# Copyright (c) Jupyter Development Team. -# Distributed under the terms of the Modified BSD License. -ARG OWNER=jupyter - -LABEL maintainer="Jupyter Project " - -# Fix: https://github.com/hadolint/hadolint/wiki/DL4006 -# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014 -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -USER root - -RUN apt-get update --yes && \ - apt-get install --yes --no-install-recommends \ - # for cython: https://cython.readthedocs.io/en/latest/src/quickstart/install.html - build-essential \ - # for latex labels - cm-super \ - dvipng \ - # for matplotlib anim - ffmpeg && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -USER ${NB_UID} - -# Install Python 3 packages -RUN mamba install --quiet --yes \ - 'altair' \ - 'beautifulsoup4' \ - 'bokeh' \ - 'bottleneck' \ - 'cloudpickle' \ - 'conda-forge::blas=*=openblas' \ - 'cython' \ - 'dask' \ - 'dill' \ - 'h5py' \ - 'ipympl'\ - 'ipywidgets' \ - 'matplotlib-base' \ - 'numba' \ - 'numexpr' \ - 'pandas' \ - 'patsy' \ - 'protobuf' \ - 'pytables' \ - 'scikit-image' \ - 'scikit-learn' \ - 'scipy' \ - 'seaborn' \ - 'sqlalchemy' \ - 'statsmodels' \ - 'sympy' \ - 'widgetsnbextension'\ - 'xlrd' && \ - mamba clean --all -f -y && \ - fix-permissions "${CONDA_DIR}" && \ - fix-permissions "/home/${NB_USER}" - -# Install facets which does not have a pip or conda package at the moment -WORKDIR /tmp -RUN git clone https://github.com/PAIR-code/facets.git && \ - jupyter nbextension install facets/facets-dist/ --sys-prefix && \ - rm -rf /tmp/facets && \ - fix-permissions "${CONDA_DIR}" && \ - fix-permissions "/home/${NB_USER}" - -# Import matplotlib the first time to build the font cache. -ENV XDG_CACHE_HOME="/home/${NB_USER}/.cache/" - -RUN MPLBACKEND=Agg python -c "import matplotlib.pyplot" && \ - fix-permissions "/home/${NB_USER}" - -USER ${NB_UID} - -WORKDIR "${HOME}" - - - -################ copied from https://github.com/iot-salzburg/gpu-jupyter/tree/master/src - - -# LABEL authors="Christoph Schranz , Mathematical Michael " - - #tensorflow 2.10.1 requires keras<2.11,>=2.10.0, but you have keras 2.11.0 - -# Install Tensorflow, check compatibility here: -# https://www.tensorflow.org/install/source#gpu -# installation via conda leads to errors in version 4.8.2 -RUN pip install --upgrade pip && \ - pip install --no-cache-dir "tensorflow==2.11.0" -RUN pip install --upgrade pip && \ - pip install --no-cache-dir keras==2.11.0 - -# Install PyTorch with dependencies -RUN conda install --quiet --yes \ - pyyaml mkl mkl-include setuptools cmake cffi typing && \ - conda clean --all -f -y && \ - fix-permissions $CONDA_DIR && \ - fix-permissions /home/$NB_USER - -# Check compatibility here: -# https://pytorch.org/get-started/locally/ -# Installation via conda leads to errors installing cudatoolkit=11.1 -RUN pip install --no-cache-dir torch torchvision torchaudio torchviz --extra-index-url https://download.pytorch.org/whl/cu116 - -ENV CUDA_PATH=/opt/conda/ - -USER root - -# Install nvtop to monitor the gpu tasks -RUN apt-get update && \ - apt-get install -y cmake libncurses5-dev libncursesw5-dev git && \ - rm -rf /var/lib/apt/lists/* - -RUN git clone https://github.com/Syllo/nvtop.git /run/nvtop && \ - mkdir -p /run/nvtop/build && cd /run/nvtop/build && \ - (cmake .. -DNVML_RETRIEVE_HEADER_ONLINE=True 2> /dev/null || echo "cmake was not successful") && \ - (make 2> /dev/null || echo "make was not successful") && \ - (make install 2> /dev/null || echo "make install was not successful") && \ - cd /tmp && rm -rf /tmp/nvtop - -RUN fix-permissions /home/$NB_USER - -USER $NB_UID - - - ############################################################################ - ############################ Useful packages ############################### - ############################################################################ - -LABEL authors="Christoph Schranz , Mathematical Michael " - -USER root - -RUN pip install --no-cache-dir ipyleaflet "plotly>=4.14.3" "ipywidgets>=7.5" -RUN conda install -c conda-forge nodejs -# Install important packages and Graphviz -RUN set -ex \ - && buildDeps=' \ - graphviz==0.19.1 \ -' \ - && apt-get update \ - && apt-get -y install htop apt-utils iputils-ping graphviz libgraphviz-dev openssh-client \ - && pip install --no-cache-dir $buildDeps - -# Install various extensions -RUN fix-permissions $CONDA_DIR - -# RUN jupyter labextension install @jupyterlab/github -# RUN pip install jupyterlab-git -RUN pip install jupyterlab-drawio -RUN jupyter nbextension enable --py --sys-prefix ipyleaflet - -RUN jupyter labextension install jupyterlab-plotly -RUN jupyter labextension install @jupyter-widgets/jupyterlab-manager plotlywidget -# RUN pip install --no-cache-dir jupyter-tabnine --user && \ -# jupyter nbextension install --py jupyter_tabnine --user && \ -# jupyter nbextension enable --py jupyter_tabnine --user && \ -# jupyter serverextension enable --py jupyter_tabnine --user -RUN pip install --no-cache-dir jupyter_contrib_nbextensions \ - jupyter_nbextensions_configurator rise -# jupyter nbextension enable codefolding/main -RUN jupyter labextension install @ijmbarr/jupyterlab_spellchecker - -RUN fix-permissions /home/$NB_USER - - -## add sandbox plugins -RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-sandbox-theme -RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-data-pool -RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-training -RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-synthetic-data - -# Switch back to jovyan to avoid accidental container runs as root -USER $NB_UID - -# Copy jupyter_notebook_config.json -#COPY jupyter_notebook_config.json /etc/jupyter/ \ No newline at end of file +# https://anaconda.org/pytorch-test/pytorch-cuda \ No newline at end of file diff --git a/old/Dockerfile b/old/Dockerfile new file mode 100644 index 0000000..6f08cac --- /dev/null +++ b/old/Dockerfile @@ -0,0 +1,393 @@ +ARG NVIDIA_IMAGE=nvcr.io/nvidia/tensorflow:22.12-tf2-py3 + +FROM ${NVIDIA_IMAGE} +############################################################################ +#################### Dependency: jupyter/base-image ######################## +############################################################################ + +#### copied from https://github.com/jupyter/docker-stacks/tree/main/docker-stacks-foundation + +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +# Ubuntu 22.04 (jammy) +# https://hub.docker.com/_/ubuntu/tags?page=1&name=jammy +ARG ROOT_CONTAINER=ubuntu:22.04 + + +LABEL maintainer="Jupyter Project " +ARG NB_USER="jovyan" +ARG NB_UID="1000" +ARG NB_GID="100" + +# Fix: https://github.com/hadolint/hadolint/wiki/DL4006 +# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014 +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +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 --yes && \ + # - apt-get upgrade is run to patch known vulnerabilities in apt-get packages as + # the ubuntu base image is rebuilt too seldom sometimes (less than once a month) + apt-get upgrade --yes && \ + apt-get install --yes --no-install-recommends \ + # - bzip2 is necessary to extract the micromamba executable. + bzip2 \ + ca-certificates \ + locales \ + sudo \ + # - tini is installed as a helpful container entrypoint that reaps zombie + # processes and such of the actual executable we want to start, see + # https://github.com/krallin/tini#why-tini for details. + tini \ + wget && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ + locale-gen + +# Configure environment +ENV CONDA_DIR=/opt/conda \ + 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}" + +# Copy a script that we will use to correct permissions after running certain commands +COPY fix-permissions /usr/local/bin/fix-permissions +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 -l -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} + +# Pin python version here, or set it to "default" +ARG PYTHON_VERSION=3.10 + +# 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 + +COPY --chown="${NB_UID}:${NB_GID}" initial-condarc "${CONDA_DIR}/.condarc" +WORKDIR /tmp +RUN set -x && \ + arch=$(uname -m) && \ + if [ "${arch}" = "x86_64" ]; then \ + # Should be simpler, see + arch="64"; \ + fi && \ + wget -qO /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}" && \ + fix-permissions "/home/${NB_USER}" + +EXPOSE 8888 + +# Configure container startup +ENTRYPOINT ["tini", "-g", "--"] +CMD ["start-notebook.sh"] + +# Copy local files as late as possible to avoid cache busting +COPY start.sh start-notebook.sh start-singleuser.sh /usr/local/bin/ +# Currently need to have both jupyter_notebook_config and jupyter_server_config to support classic and lab +COPY jupyter_server_config.py /etc/jupyter/ + +# Fix permissions on /etc/jupyter as root +USER root + +# Legacy for Jupyter Notebook Server, see: [#1205](https://github.com/jupyter/docker-stacks/issues/1205) +RUN sed -re "s/c.ServerApp/c.NotebookApp/g" \ + /etc/jupyter/jupyter_server_config.py > /etc/jupyter/jupyter_notebook_config.py && \ + fix-permissions /etc/jupyter/ + +# HEALTHCHECK documentation: https://docs.docker.com/engine/reference/builder/#healthcheck +# This healtcheck works well for `lab`, `notebook`, `nbclassic`, `server` and `retro` jupyter commands +# https://github.com/jupyter/docker-stacks/issues/915#issuecomment-1068528799 +HEALTHCHECK --interval=15s --timeout=3s --start-period=5s --retries=3 \ + CMD wget -O- --no-verbose --tries=1 --no-check-certificate \ + http${GEN_CERT:+s}://localhost:8888${JUPYTERHUB_SERVICE_PREFIX:-/}api || exit 1 + +# Switch back to jovyan to avoid accidental container runs as root +USER ${NB_UID} + +WORKDIR "${HOME}" + + +############################################################################ +################# Dependency: jupyter/minimal-notebook ##################### +############################################################################ + +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. +ARG OWNER=jupyter + +LABEL maintainer="Jupyter Project " + +# Fix: https://github.com/hadolint/hadolint/wiki/DL4006 +# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014 +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +USER root + +# Install all OS dependencies for fully functional notebook server +RUN apt-get update --yes && \ + apt-get install --yes --no-install-recommends \ + # Common useful utilities + git \ + nano-tiny \ + tzdata \ + unzip \ + vim-tiny \ + # Inkscape is installed to be able to convert SVG files + inkscape \ + # git-over-ssh + openssh-client \ + # less is needed to run help in R + # see: https://github.com/jupyter/docker-stacks/issues/1588 + less \ + # nbconvert dependencies + # https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex + texlive-xetex \ + texlive-fonts-recommended \ + texlive-plain-generic && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +# Create alternative for nano -> nano-tiny +RUN update-alternatives --install /usr/bin/nano nano /bin/nano-tiny 10 + +# Switch back to jovyan to avoid accidental container runs as root +USER ${NB_UID} + +############################################################################ +################# Dependency: jupyter/scipy-notebook ####################### +############################################################################ + +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. +ARG OWNER=jupyter + +LABEL maintainer="Jupyter Project " + +# Fix: https://github.com/hadolint/hadolint/wiki/DL4006 +# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014 +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +USER root + +RUN apt-get update --yes && \ + apt-get install --yes --no-install-recommends \ + # for cython: https://cython.readthedocs.io/en/latest/src/quickstart/install.html + build-essential \ + # for latex labels + cm-super \ + dvipng \ + # for matplotlib anim + ffmpeg && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +USER ${NB_UID} + +# Install Python 3 packages +RUN mamba install --quiet --yes \ + 'altair' \ + 'beautifulsoup4' \ + 'bokeh' \ + 'bottleneck' \ + 'cloudpickle' \ + 'conda-forge::blas=*=openblas' \ + 'cython' \ + 'dask' \ + 'dill' \ + 'h5py' \ + 'ipympl'\ + 'ipywidgets' \ + 'matplotlib-base' \ + 'numba' \ + 'numexpr' \ + 'pandas' \ + 'patsy' \ + 'protobuf' \ + 'pytables' \ + 'scikit-image' \ + 'scikit-learn' \ + 'scipy' \ + 'seaborn' \ + 'sqlalchemy' \ + 'statsmodels' \ + 'sympy' \ + 'widgetsnbextension'\ + 'xlrd' && \ + mamba clean --all -f -y && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +# Install facets which does not have a pip or conda package at the moment +WORKDIR /tmp +RUN git clone https://github.com/PAIR-code/facets.git && \ + jupyter nbextension install facets/facets-dist/ --sys-prefix && \ + rm -rf /tmp/facets && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +# Import matplotlib the first time to build the font cache. +ENV XDG_CACHE_HOME="/home/${NB_USER}/.cache/" + +RUN MPLBACKEND=Agg python -c "import matplotlib.pyplot" && \ + fix-permissions "/home/${NB_USER}" + +USER ${NB_UID} + +WORKDIR "${HOME}" + + + +################ copied from https://github.com/iot-salzburg/gpu-jupyter/tree/master/src + + +# LABEL authors="Christoph Schranz , Mathematical Michael " + + #tensorflow 2.10.1 requires keras<2.11,>=2.10.0, but you have keras 2.11.0 + +# Install Tensorflow, check compatibility here: +# https://www.tensorflow.org/install/source#gpu +# installation via conda leads to errors in version 4.8.2 +RUN pip install --upgrade pip && \ + pip install --no-cache-dir "tensorflow==2.11.0" +RUN pip install --upgrade pip && \ + pip install --no-cache-dir keras==2.11.0 + +# Install PyTorch with dependencies +RUN conda install --quiet --yes \ + pyyaml mkl mkl-include setuptools cmake cffi typing && \ + conda clean --all -f -y && \ + fix-permissions $CONDA_DIR && \ + fix-permissions /home/$NB_USER + +# Check compatibility here: +# https://pytorch.org/get-started/locally/ +# Installation via conda leads to errors installing cudatoolkit=11.1 +RUN pip install --no-cache-dir torch torchvision torchaudio torchviz --extra-index-url https://download.pytorch.org/whl/cu116 + +ENV CUDA_PATH=/opt/conda/ + +USER root + +# Install nvtop to monitor the gpu tasks +RUN apt-get update && \ + apt-get install -y cmake libncurses5-dev libncursesw5-dev git && \ + rm -rf /var/lib/apt/lists/* + +RUN git clone https://github.com/Syllo/nvtop.git /run/nvtop && \ + mkdir -p /run/nvtop/build && cd /run/nvtop/build && \ + (cmake .. -DNVML_RETRIEVE_HEADER_ONLINE=True 2> /dev/null || echo "cmake was not successful") && \ + (make 2> /dev/null || echo "make was not successful") && \ + (make install 2> /dev/null || echo "make install was not successful") && \ + cd /tmp && rm -rf /tmp/nvtop + +RUN fix-permissions /home/$NB_USER + +USER $NB_UID + + + ############################################################################ + ############################ Useful packages ############################### + ############################################################################ + +LABEL authors="Christoph Schranz , Mathematical Michael " + +USER root + +RUN pip install --no-cache-dir ipyleaflet "plotly>=4.14.3" "ipywidgets>=7.5" +RUN conda install -c conda-forge nodejs +# Install important packages and Graphviz +RUN set -ex \ + && buildDeps=' \ + graphviz==0.19.1 \ +' \ + && apt-get update \ + && apt-get -y install htop apt-utils iputils-ping graphviz libgraphviz-dev openssh-client \ + && pip install --no-cache-dir $buildDeps + +# Install various extensions +RUN fix-permissions $CONDA_DIR + +# RUN jupyter labextension install @jupyterlab/github +# RUN pip install jupyterlab-git +RUN pip install jupyterlab-drawio +RUN jupyter nbextension enable --py --sys-prefix ipyleaflet + +RUN jupyter labextension install jupyterlab-plotly +RUN jupyter labextension install @jupyter-widgets/jupyterlab-manager plotlywidget +# RUN pip install --no-cache-dir jupyter-tabnine --user && \ +# jupyter nbextension install --py jupyter_tabnine --user && \ +# jupyter nbextension enable --py jupyter_tabnine --user && \ +# jupyter serverextension enable --py jupyter_tabnine --user +RUN pip install --no-cache-dir jupyter_contrib_nbextensions \ + jupyter_nbextensions_configurator rise +# jupyter nbextension enable codefolding/main +RUN jupyter labextension install @ijmbarr/jupyterlab_spellchecker + +RUN fix-permissions /home/$NB_USER + + +## add sandbox plugins +RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-sandbox-theme +RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-data-pool +RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-training +RUN pip install --extra-index-url https://git.sandbox.iuk.hdm-stuttgart.de/api/packages/grosse/pypi/simple jupyterlab-synthetic-data + +# Switch back to jovyan to avoid accidental container runs as root +USER $NB_UID + +# Copy jupyter_notebook_config.json +#COPY jupyter_notebook_config.json /etc/jupyter/ \ No newline at end of file diff --git a/fix-permissions b/old/fix-permissions similarity index 100% rename from fix-permissions rename to old/fix-permissions diff --git a/initial-condarc b/old/initial-condarc similarity index 100% rename from initial-condarc rename to old/initial-condarc diff --git a/jupyter_notebook_config.json b/old/jupyter_notebook_config.json similarity index 100% rename from jupyter_notebook_config.json rename to old/jupyter_notebook_config.json diff --git a/jupyter_server_config.py b/old/jupyter_server_config.py similarity index 100% rename from jupyter_server_config.py rename to old/jupyter_server_config.py diff --git a/start-notebook.sh b/old/start-notebook.sh similarity index 100% rename from start-notebook.sh rename to old/start-notebook.sh diff --git a/start-singleuser.sh b/old/start-singleuser.sh similarity index 100% rename from start-singleuser.sh rename to old/start-singleuser.sh diff --git a/start.sh b/old/start.sh similarity index 100% rename from start.sh rename to old/start.sh