diff --git a/lmod/Dockerfile b/lmod/Dockerfile index 49c714e8ea62e3ee4408eafd17a79370bfc63321..05d5fc81db8037e2152e79f25f8fcb4a0524b645 100644 --- a/lmod/Dockerfile +++ b/lmod/Dockerfile @@ -43,11 +43,10 @@ RUN /bin/bash /opt/apps/install/lua/install_lua_5.1.4.9.sh COPY --chown=root:root ./install_files/lmod /opt/apps/install/lmod RUN /bin/bash /opt/apps/install/lmod/install_lmod_8.7.sh -WORKDIR /home/$NB_USER COPY files/bash.bashrc /etc/bash.bashrc COPY files/mnt.sh /tmp/mnt.sh -COPY files/load_modules.sh /tmp/custom/load_modules.sh RUN /bin/bash /tmp/mnt.sh && rm /tmp/mnt.sh -USER jovyan -ENTRYPOINT ["/bin/bash", "-l", "-c", "source /tmp/custom/start_jupyter.sh"] \ No newline at end of file +USER $NB_USER +WORKDIR /home/$NB_USER +ENTRYPOINT ["/bin/bash", "/tmp/custom/start_jupyter.sh"] \ No newline at end of file diff --git a/lmod/files/start_jupyter.sh b/lmod/files/start_jupyter.sh index fcf87862bece2fd13f885c1d56f8d373da618195..6cb70341553c74bd3f92b2cb20f3c60deee33141 100644 --- a/lmod/files/start_jupyter.sh +++ b/lmod/files/start_jupyter.sh @@ -1,6 +1,110 @@ #!/bin/bash -source /tmp/custom/load_jupyter_version.sh -source /tmp/custom/load_jupyter_modules.sh +requirements () { + echo "$(date) - Setup system specific requirements ..." + source /opt/apps/lmod/lmod/init/profile + echo "$(date) - Setup system specific requirements done" +} -jupyterhub-singleuser \ No newline at end of file +set_env() { + echo "$(date) - Set environment variables ..." + export DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + export LC_ALL=en_US.UTF-8 + export JUPYTER_LOG_DIR=${DIR} + export JUPYTER_STDOUT=${JUPYTER_LOG_DIR}/stderr + export PYTHONNOUSERSITE=1 + export MODULEPATH=/p/software/jsccloud/productionstages + export OTHERSTAGES=/p/software/jsccloud/productionstages + echo "$(date) - Set environment variables done" +} + +mount_b2drop () { + echo "$(date) - Mount B2DROP ..." + mount | grep "/mnt/B2DROP" > /dev/null + EC=$? + if [[ $EC -eq 0 ]]; then + echo "$(date) - /mnt/B2DROP is already mounted." + else + if [[ -f /home/jovyan/.davfs2/secrets ]]; then + cat /home/jovyan/.davfs2/secrets | grep "https://b2drop.eudat.eu/remote.php/webdav" &> /dev/null + EC=$? + if [[ $EC -eq 0 ]]; then + mount /mnt/B2DROP + else + echo "$(date) - Secret is not stored. Do not auto mount B2DROP." + fi + fi + fi + echo "$(date) - Mount B2DROP done" +} + +mount_just () { + echo "$(date) - Mount JUST ..." + mount | grep "/mnt/JUST_HOME" > /dev/null + EC=$? + if [[ $EC -eq 0 ]];then + echo "/mnt/JUST_HOME is already mounted" + else + CMD=$(python3 /tmp/input/bin/uftp.py) + EC=$? + if [[ $EC -eq 0 ]]; then + $CMD /mnt/JUST_HOME 2>/dev/null + EC=$? + if [[ $EC -eq 0 ]]; then + if [[ -L /home/jovyan/JUST_HOMEs_readonly && -d /home/jovyan/JUST_HOMEs_readonly ]]; then + : + else + if [[ -L /home/jovyan/JUST_HOMEs_readonly ]]; then + unlink /home/jovyan/JUST_HOMEs_readonly + fi + ln -s /mnt/JUST_HOME /home/jovyan/JUST_HOMEs_readonly + EC=$? + if [[ $EC -eq 0 ]]; then + echo "$(date) - JUST mounted to /home/jovyan/JUST_HOMEs_readonly" + else + echo "$(date) - JUST mounted to /mnt/JUST_HOME" + fi + fi + else + echo "$(date) - JUST mount failed." + fi + else + echo "$(date) - Python script ended with exit code $EC" + fi + fi + echo "$(date) - Mount JUST done" +} + +load_modules () { + echo "$(date) - Load modules ..." + + JUPYTER_VERSION_MODULES_FILE=/tmp/custom/load_jupyter_version.sh + JUPYTER_USER_MODULES_FILE=/tmp/custom/load_jupyter_modules.sh + + if [ -f $JUPYTER_VERSION_MODULES_FILE ]; then + source $JUPYTER_VERSION_MODULES_FILE + else + echo "File $JUPYTER_VERSION_MODULES_FILE does not exist. Please ensure it exists." + exit 1 + fi + if [ -f $JUPYTER_USER_MODULES_FILE ]; then + source $JUPYTER_USER_MODULES_FILE + else + echo "File $JUPYTER_USER_MODULES_FILE does not exist. Not loading user specified modules." + fi + + echo "$(date) - Load modules done" +} + +start () { + echo "$(date) - Start jupyterhub-singleuser ..." + timeout 2min jupyterhub-singleuser 2>${DIR}/stderr 1>${DIR}/stdout + echo "$(date) - Start jupyterhub-singleuser done" +} + +requirements +set_env +load_modules +# mount_b2drop +# mount_just +start