Skip to content
Snippets Groups Projects
Commit 21b9378c authored by Eleni Mathioulaki's avatar Eleni Mathioulaki
Browse files

switch to using jupyter upstream base image

and drop everything already available there
parent 58b8b5a8
No related branches found
No related tags found
1 merge request!44simplify image for K8s deployments of the Lab
Pipeline #29044 failed with stage
in 4 minutes and 19 seconds
FROM docker-registry.ebrains.eu/clb-jupyter-image/ubuntu:focal # https://jupyter-docker-stacks.readthedocs.io/en/latest/#using-old-images
FROM jupyter/minimal-notebook:a374cab4fcb6
LABEL maintainer="Collaboratory Platform <platform@humanbrainproject.eu>" LABEL maintainer="Collaboratory Platform <platform@humanbrainproject.eu>"
ARG NB_USER="jovyan"
ARG NB_UID=1000
ARG NB_GID=100
ENV GIT_COMMITTER_NAME=platform@humanbrainproject.eu \ ENV GIT_COMMITTER_NAME=platform@humanbrainproject.eu \
GIT_COMMITTER_EMAIL=platform@humanbrainproject.eu \ GIT_COMMITTER_EMAIL=platform@humanbrainproject.eu \
USER="${NB_USER}" \ USER="${NB_USER}" \
...@@ -24,43 +21,22 @@ RUN ln -sf /usr/share/zoneinfo/Europe/Zurich /etc/localtime ...@@ -24,43 +21,22 @@ RUN ln -sf /usr/share/zoneinfo/Europe/Zurich /etc/localtime
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update --yes && \ RUN apt-get update --yes && \
apt-get install --yes \ apt-get install --yes \
ca-certificates \
cmake \ cmake \
csh \ csh \
curl \ curl \
cython \ cython \
gcc \ gcc \
gettext \ gettext \
git \
llvm \ llvm \
lsof \ lsof \
mpich \ mpich \
pandoc \
python-dev \
python3-venv \
python3-pip \
r-base \ r-base \
swig \ swig \
unzip \
vim && \ vim && \
apt-get clean && rm -rf /var/lib/apt/lists/* apt-get clean && rm -rf /var/lib/apt/lists/*
# install nodejs
RUN curl -fsSL https://deb.nodesource.com/setup_17.x | bash
RUN apt-get install -y nodejs
# install min texlive (necessary for nb exports)
RUN apt-get update --yes && \
apt-get install --yes --no-install-recommends \
wget \
texlive-xetex \
texlive-fonts-recommended \
texlive-plain-generic && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# jupyter install in /opt/app-root/ for legacy reasons (previously based on centos base image) # jupyter install in /opt/app-root/ for legacy reasons (previously based on centos base image)
RUN mkdir -p /opt/app-root/etc /opt/app-root/clb/ /opt/app-root/src RUN mkdir -p /opt/app-root/etc /opt/app-root/clb/ /opt/app-root/src
COPY base/jupyter_notebook_config.py /opt/app-root/etc/
# folders for drive integration # folders for drive integration
RUN mkdir -p /mnt/user/ RUN mkdir -p /mnt/user/
...@@ -73,10 +49,6 @@ ENV HOME=/opt/app-root/src/ ...@@ -73,10 +49,6 @@ ENV HOME=/opt/app-root/src/
COPY base/requirements.txt /tmp COPY base/requirements.txt /tmp
RUN pip install --no-cache-dir -r /tmp/requirements.txt RUN pip install --no-cache-dir -r /tmp/requirements.txt
# fix missing template issue in nbgitpuller: https://github.com/jupyterhub/nbgitpuller/issues/235
# remove this once it has been fixed in project
RUN ln -s /usr/local/lib/python3.8/dist-packages/nbgitpuller/templates/status.html /usr/local/lib/python3.8/dist-packages/notebook/templates/
# disable ipcluster extension # disable ipcluster extension
RUN jupyter labextension disable ipcluster \ RUN jupyter labextension disable ipcluster \
ipyparallel-labextension ipyparallel-labextension
...@@ -103,9 +75,8 @@ RUN R --slave -e "IRkernel::installspec(name = 'ir363', displayname = 'R 3.6.3') ...@@ -103,9 +75,8 @@ RUN R --slave -e "IRkernel::installspec(name = 'ir363', displayname = 'R 3.6.3')
# disable core dumps # disable core dumps
RUN echo "* - core 0" >> /etc/security/limits.conf RUN echo "* - core 0" >> /etc/security/limits.conf
# fix permissions so NB_USER has permissions to run notebooks and install packages # allow the script to fail (because of symlinks) without failing the build (TODO: fix)
COPY base/fix-permissions /usr/local/bin/fix-permissions RUN sed -i 's/set -e/set +e/' $(which fix-permissions)
RUN chmod +x /usr/local/bin/fix-permissions
# copy user setup file # copy user setup file
COPY base/user_setup.sh /opt/app-root/etc/ COPY base/user_setup.sh /opt/app-root/etc/
...@@ -113,19 +84,12 @@ RUN chmod +x /opt/app-root/etc/user_setup.sh ...@@ -113,19 +84,12 @@ RUN chmod +x /opt/app-root/etc/user_setup.sh
RUN fix-permissions /opt/app-root/ && \ RUN fix-permissions /opt/app-root/ && \
fix-permissions /tmp/cache/ && \ fix-permissions /tmp/cache/ && \
fix-permissions /usr/local/share/jupyter/ && \ fix-permissions /opt/conda/share/jupyter/ && \
fix-permissions /usr/local/etc/jupyter && \ fix-permissions /opt/conda/etc/jupyter && \
fix-permissions /usr/local/lib/R/site-library && \ fix-permissions /usr/local/lib/R/site-library
fix-permissions /usr/etc/jupyter/
COPY base/start-notebook.sh /opt/app-root/etc/
COPY base/.spynnaker.cfg /opt/app-root/src/ COPY base/.spynnaker.cfg /opt/app-root/src/
RUN chmod +x /opt/app-root/etc/start-notebook.sh
WORKDIR /opt/app-root/src/ WORKDIR /opt/app-root/src/
EXPOSE 8080
USER ${NB_UID} USER ${NB_UID}
CMD /opt/app-root/etc/start-notebook.sh
#!/bin/sh
# source: https://github.com/sclorg/s2i-base-container/blob/master/core/root/usr/bin/fix-permissions
# Allow this script to fail without failing a build
set +e
SYMLINK_OPT=${2:--L}
# Fix permissions on the given directory or file to allow group read/write of
# regular files and execute of directories.
[ $(id -u) -ne 0 ] && CHECK_OWNER=" -uid $(id -u)"
# If argument does not exist, script will still exit with 0,
# but at least we'll see something went wrong in the log
if ! [ -e "$1" ] ; then
echo "ERROR: File or directory $1 does not exist." >&2
# We still want to end successfully
exit 0
fi
find $SYMLINK_OPT "$1" ${CHECK_OWNER} \! -gid 0 -exec chgrp 0 {} +
find $SYMLINK_OPT "$1" ${CHECK_OWNER} \! -perm -g+rw -exec chmod g+rw {} +
find $SYMLINK_OPT "$1" ${CHECK_OWNER} -perm /u+x -a \! -perm /g+x -exec chmod g+x {} +
find $SYMLINK_OPT "$1" ${CHECK_OWNER} -type d \! -perm /g+x -exec chmod g+x {} +
# Always end successfully
exit 0
\ No newline at end of file
import os
port = int(os.environ.get('JUPYTER_NOTEBOOK_PORT', '8080'))
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.port = port
c.NotebookApp.open_browser = False
c.NotebookApp.quit_button = False
c.WebPDFExporter.enabled = False
if os.environ.get('JUPYTERHUB_SERVICE_PREFIX'):
c.NotebookApp.base_url = os.environ.get('JUPYTERHUB_SERVICE_PREFIX')
password = os.environ.get('JUPYTER_NOTEBOOK_PASSWORD')
if password:
import notebook.auth
c.NotebookApp.password = notebook.auth.passwd(password)
del password
del os.environ['JUPYTER_NOTEBOOK_PASSWORD']
image_config_file = '/opt/app-root/src/.jupyter/jupyter_notebook_config.py'
if os.path.exists(image_config_file):
with open(image_config_file) as fp:
exec(compile(fp.read(), image_config_file, 'exec'), globals())
beautifulsoup4==4.10.0
bluepyopt==1.11.5 bluepyopt==1.11.5
bokeh==2.4.2 bokeh==2.4.2
Cython==0.29.26 Cython==0.29.26
cffi==1.14.5
cryptography==36.0.1
ebrains-drive==0.5.0 ebrains-drive==0.5.0
h5py==3.6.0 h5py==3.6.0
ipympl==0.8.5 ipympl==0.8.5
...@@ -11,10 +8,7 @@ ipywidgets==7.6.5 ...@@ -11,10 +8,7 @@ ipywidgets==7.6.5
jupyterlab-widgets==1.0.2 jupyterlab-widgets==1.0.2
jupyterlab-topbar==0.6.1 jupyterlab-topbar==0.6.1
jupyterlab-system-monitor==0.8.0 jupyterlab-system-monitor==0.8.0
jupyterhub==1.5.0
jupyterlab==3.2.8
jupyterlab-git==0.34.1 jupyterlab-git==0.34.1
jupyter-server==1.13.5
lazyarray==0.5.1 lazyarray==0.5.1
lxml==4.7.1 lxml==4.7.1
matplotlib==3.5.3 matplotlib==3.5.3
...@@ -31,9 +25,7 @@ numpy==1.23.5 ...@@ -31,9 +25,7 @@ numpy==1.23.5
pandas==1.3.5 pandas==1.3.5
patsy==0.5.2 patsy==0.5.2
plotly==5.5.0 plotly==5.5.0
Pygments==2.11.2
python-swiftclient==3.13.0 python-swiftclient==3.13.0
PyJWT==2.3.0
pyOpenSSL==22.0.0 # TODO: Issue with 22.1 https://github.com/pyca/pyopenssl/issues/1154 pyOpenSSL==22.0.0 # TODO: Issue with 22.1 https://github.com/pyca/pyopenssl/issues/1154
pyunicore==0.15.0 pyunicore==0.15.0
requests-oauthlib==1.3.0 requests-oauthlib==1.3.0
......
#!/bin/bash
set -e
# Disable core dumps
ulimit -c 0
exec jupyter labhub --NotebookApp.default_url=/lab --config=/opt/app-root/etc/jupyter_notebook_config.py $@
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment