Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ri/tech-hub/platform/lab/clb-jupyter-nb-images
  • rominabaila/clb-jupyter-nb-images
2 results
Show changes
Commits on Source (72)
variables:
docker_registry_user: "robot$$gitlab"
stages: stages:
- build - build
...@@ -14,3 +11,13 @@ build_image: ...@@ -14,3 +11,13 @@ build_image:
- tags - tags
tags: tags:
- shell-runner - shell-runner
build_latest_dev_image:
stage: build
script:
- docker build -f base/Dockerfile -t docker-registry.ebrains.eu/clb-jupyter-image/ebrains:dev-$CI_COMMIT_SHORT_SHA .
- docker login -u $docker_registry_user -p $docker_registry_prod_token docker-registry.ebrains.eu
- docker push docker-registry.ebrains.eu/clb-jupyter-image/ebrains:dev-$CI_COMMIT_SHORT_SHA
when: manual
tags:
- shell-runner
[Machine]
spalloc_server = https://spinnaker.cs.man.ac.uk/spalloc/
[Java]
use_java = True
FROM ubuntu:focal # https://jupyter-docker-stacks.readthedocs.io/en/latest/#using-old-images
FROM quay.io/jupyter/minimal-notebook:b74418220768
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}" \
...@@ -21,46 +18,17 @@ USER root ...@@ -21,46 +18,17 @@ USER root
RUN ln -sf /usr/share/zoneinfo/Europe/Zurich /etc/localtime RUN ln -sf /usr/share/zoneinfo/Europe/Zurich /etc/localtime
# Set to noninteractive for install # Set to noninteractive for install
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 \
csh \
curl \
cython \
gcc \ gcc \
gettext \
git \
libnss-wrapper \
llvm \
lsof \
mpich \
pandoc \
python-dev \
python3-venv \
python3-pip \
r-base \ r-base \
swig \ lsof \
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 \
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,52 +41,41 @@ ENV HOME=/opt/app-root/src/ ...@@ -73,52 +41,41 @@ 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
# install additional labextensions # install additional labextensions (TODO: install with pip, if possible)
RUN jupyter labextension install --no-build \ RUN jupyter labextension install --no-build \
clb-jupyter-ext-query-params@3.2.0 clb-jupyter-ext-query-params-dev@3.2.0 \
clb-lab-extension@0.9.2
RUN jupyter lab build RUN jupyter lab build
RUN jupyter notebook --generate-config RUN jupyter notebook --generate-config
RUN mkdir -p /opt/app-root/src/.ipython/profile_default/startup/ /opt/app-root/src/.local/lib/python3.8/site-packages/ /tmp/cache/ RUN mkdir -p /opt/app-root/src/.ipython/profile_default/startup/ /tmp/cache/
# Preload clb_oauth # Preload clb_oauth
RUN echo 'from clb_nb_utils import oauth as clb_oauth' >> /opt/app-root/src/.ipython/profile_default/startup/50-clb-nb-utils.py RUN echo 'from clb_nb_utils import oauth as clb_oauth' >> /opt/app-root/src/.ipython/profile_default/startup/50-clb-nb-utils.py
# install R kernel # install R kernel
RUN R --slave -e "install.packages('IRkernel')" RUN R --slave -e "install.packages('IRkernel')"
RUN R --slave -e "IRkernel::installspec(name = 'ir363', displayname = 'R 3.6.3')" RUN R --slave -e "IRkernel::installspec(name = 'ir', displayname = 'R 4.3.3')"
# disable core dumps
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
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/
# to support OpenShift's arbitrary UIDs
# more info: https://docs.openshift.com/enterprise/3.1/creating_images/guidelines.html
COPY base/passwd.template /tmp/passwd.template
COPY base/group.template /tmp/group.template
COPY base/start-notebook.sh /opt/app-root/etc/
RUN chmod +x /opt/app-root/etc/start-notebook.sh
WORKDIR /opt/app-root/src/ COPY base/.spynnaker.cfg /opt/app-root/src/
EXPOSE 8080 WORKDIR /opt/app-root/src/
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
nb_group:x:${GROUP_ID}:
nb_group_user:x:${USER_ID}:
\ 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())
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
${USER}:x:${USER_ID}:${GROUP_ID}:${USER_DESCRIPTION}:${HOME}:/bin/bash
\ No newline at end of file
beautifulsoup4==4.10.0 git+https://github.com/HumanBrainProject/clb-nb-utils.git
bluepyopt==1.11.5 ipympl==0.8.8
bokeh==2.4.2 ipywidgets==7.7.0
Cython==0.29.26 jupyterlab==3.4.8
cffi==1.14.5 jupyterlab-git==0.44.0
cryptography==36.0.1
ebrains-drive==0.4.0
elephant==0.10.0
h5py==3.6.0
ipympl==0.8.5
ipywidgets==7.6.5
jupyterlab-widgets==1.0.2
jupyterlab-topbar==0.6.1
jupyterlab-system-monitor==0.8.0 jupyterlab-system-monitor==0.8.0
jupyterhub==1.5.0 jupyterlab-topbar==0.6.1
jupyterlab==3.2.8 jupyterlab-widgets==1.1.11
jupyterlab-git==0.34.1 nbdime==3.2.1
jupyter-server==1.13.5 nbgitpuller==1.2.2
lazyarray==0.5.1
lxml==4.7.1
matplotlib==3.5.1
mpi4py==3.1.3
nbdime==3.1.1
nbgitpuller==1.0.2
nbresuse==0.4.0 nbresuse==0.4.0
neo==0.10.0
neurom==3.1.0
nglview==3.0.3
nibabel==3.2.1
numba==0.54.1
numexpr==2.8.1
numpy==1.20.3
pandas==1.3.5
patsy==0.5.2
plotly==5.5.0
Pygments==2.11.2
python-swiftclient==3.13.0
PyJWT==2.3.0
pyunicore==0.9.13
requests-oauthlib==1.3.0
rise==5.7.1
rpy2==3.4.5
scikit-image==0.19.1
scikit-learn==1.0.2
scipy==1.7.3
seaborn==0.11.2
statsmodels==0.13.1
sympy==1.9
tvb-ext-unicore==0.1.3
vincent==0.4.4
widgetsnbextension==3.5.2
xlrd==2.0.1
git+https://github.com/HumanBrainProject/clb-nb-utils.git
#!/bin/bash
set -e
# to support OpenShift's arbitrary UIDs
# more info: https://docs.openshift.com/enterprise/3.1/creating_images/guidelines.html
export USER_ID=$(id -u)
export GROUP_ID=$(id -g)
export USER_DESCRIPTION="Notebook User"
envsubst < /tmp/passwd.template > /tmp/passwd
envsubst < /tmp/group.template > /tmp/group
export LD_PRELOAD=libnss_wrapper.so
export NSS_WRAPPER_PASSWD=/tmp/passwd
export NSS_WRAPPER_GROUP=/tmp/group
exec jupyter labhub --NotebookApp.default_url=/lab --config=/opt/app-root/etc/jupyter_notebook_config.py $@