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
Select Git revision
  • fix-jh-version
  • jupyterlab4
  • update-ipywidgets
  • master
  • fix/startup-error
  • jupyterlab_update
  • v1.0
  • v1.1
  • v1.2
  • v1.2.1
  • v1.2.2
  • v1.2.3
  • v1.2.4
  • v1.2.5
  • v1.2.6
  • v1.2.7
  • v1.2.8
  • v1.3.0
  • v1.3.0_k8s
  • v1.3.0_test
  • v1.3.1
  • v2.0.0
22 results

Target

Select target project
No results found
Select Git revision
  • k8s-dev
  • master
  • master_working
  • fix/startup-error
  • jupyterlab_update
  • dev
  • v1.0
  • v1.1
  • v1.2
  • v1.2.1
  • v1.2.2
  • v1.2.3
  • v1.2.4
  • v1.2.5
  • v1.2.6
  • v1.2.7
  • v1.2.8
  • v1.3.0
  • v1.3.0_test
  • v1.3.1
20 results
Show changes

Commits on Source 72

9 files
+ 43
199
Compare changes
  • Side-by-side
  • Inline

Files

+10 −3
Original line number Original line Diff line number Diff line
variables:
  docker_registry_user: "robot$$gitlab"

stages:
stages:
  - build
  - build


@@ -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

base/.spynnaker.cfg

0 → 100644
+5 −0
Original line number Original line Diff line number Diff line
[Machine]
spalloc_server = https://spinnaker.cs.man.ac.uk/spalloc/

[Java]
use_java = True
+19 −62
Original line number Original line Diff line number Diff line
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
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/
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

base/fix-permissions

deleted100644 → 0
+0 −28
Original line number Original line Diff line number Diff line
#!/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

base/group.template

deleted100644 → 0
+0 −2
Original line number Original line Diff line number Diff line
nb_group:x:${GROUP_ID}:
nb_group_user:x:${USER_ID}:
 No newline at end of file

base/jupyter_notebook_config.py

deleted100644 → 0
+0 −26
Original line number Original line Diff line number Diff line
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())

base/passwd.template

deleted100644 → 0
+0 −14
Original line number Original line Diff line number Diff line
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
Original line number Original line Diff line number Diff line
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

base/start-notebook.sh

deleted100644 → 0
+0 −13
Original line number Original line Diff line number Diff line
#!/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 $@