Skip to content
Snippets Groups Projects
Select Git revision
  • 9e47bb22beccb327cebcf2a419a003ce1982119b
  • develop default protected
  • master
3 results

Dockerfile

Blame
  • Dockerfile 4.86 KiB
    ARG BASE_CONTAINER=brunoe/jupyterutln-default:develop
    FROM $BASE_CONTAINER
    
    LABEL maintainer="Emmanuel Bruno <emmanuel.bruno@univ-tln.fr>"
    
    ENV PLANTUML_VERSION 1.2022.12
    ENV PLANTUML_SHA1 da1de7f1b3de4c70b2ff501579802085dbc9a05b
    USER root
    
    # Install minimal dependencies 
    RUN --mount=type=cache,target=/var/cache/apt \
    	rm -f /etc/apt/apt.conf.d/docker-clean &&\
    	apt-get update && apt-get install -qq --yes --no-install-recommends\
    		coreutils \
    		curl \
    		dnsutils \
    		gnupg \
    		graphviz \
    		inkscape \
    		iputils-ping \
    		net-tools \
    		pandoc \
    		procps \
    		tree \
    		ttf-bitstream-vera \
    		zsh \
            	make latexmk fonts-freefont-otf texlive-latex-extra texlive-fonts-extra texlive-xetex latexmk \
    	&& rm -rf /var/lib/apt/lists/*
    
    ## ZSH
    ADD zsh/initzsh.sh /tmp/initzsh.sh
    ADD zsh/p10k.zsh $HOME/.p10k.zsh 
    
    RUN --mount=type=cache,target=/var/cache/buildkit/pip \
    	echo -e "\e[93m**** Install Java Kernel for Jupyter ****\e[38;5;241m" && \
            curl -sL https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip -o /tmp/ijava-kernel.zip && \
            unzip /tmp/ijava-kernel.zip -d /tmp/ijava-kernel && \
            cd /tmp/ijava-kernel && \
            python3 install.py --sys-prefix && \
    	# jupyter kernelspec install --user java/ && \
            cd && rm -rf /tmp/ijava-kernel /tmp/ijava-kernel.zip && \
        echo -e "\e[93m**** Install ZSH Kernel for Jupyter ****\e[38;5;241m" && \
            python3 -m pip install zsh_jupyter_kernel && \
            python3 -m zsh_jupyter_kernel.install --sys-prefix && \
        echo -e "\e[93m**** Update Jupyter config ****\e[38;5;241m" && \
    	mkdir -p $HOME/jupyter_data && \
    	jupyter lab --generate-config && \
    	sed -i -e '/c.ServerApp.disable_check_xsrf =/ s/= .*/= True/' \
    	    -e 's/# \(c.ServerApp.disable_check_xsrf\)/\1/' \
    	    -e '/c.ServerApp.data_dir =/ s/= .*/= "\/home\/jovyan\/jupyter_data"/' \
    	    -e "/c.ServerApp.terminado_settings =/ s/= .*/= { 'shell_command': ['\/bin\/zsh'] }/" \
    	    -e 's/# \(c.ServerApp.terminado_settings\)/\1/' \
    	$HOME/.jupyter/jupyter_lab_config.py && \ 
        echo -e "\e[93m**** Configure a nice zsh environment ****\e[38;5;241m" && \
     	git clone --recursive https://github.com/sorin-ionescu/prezto.git "$HOME/.zprezto" && \
    	zsh -c /tmp/initzsh.sh && \
    	sed -i -e "s/zstyle ':prezto:module:prompt' theme 'sorin'/zstyle ':prezto:module:prompt' theme 'powerlevel10k'/" $HOME/.zpreztorc && \
    	echo "[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh" >> $HOME/.zshrc && \
    	echo "PATH=/opt/bin:$PATH" >> $HOME/.zshrc && \
        fix-permissions $CONDA_DIR && \
        fix-permissions /home/$NB_USER
    
    ## Enable Java Early Access
    COPY kernel.json /opt/conda/share/jupyter/kernels/java/kernel.json
    # Adds IJava Jupyter Kernel Personnal Magics
    ADD magics  /magics
    
    # ENV IJAVA_COMPILER_OPTS="-deprecation -Xlint -XprintProcessorInfo -XprintRounds --enable-preview --release 17"
    ENV IJAVA_CLASSPATH="${HOME}/lib/*.jar:/usr/local/bin/*.jar"
    ENV IJAVA_STARTUP_SCRIPTS_PATH="/magics/*"
    
    # Tool to easily install java dev tools with sdkman  
    # Install latest java jdk LTS
    # Install the latest mvn 3
    RUN --mount=type=cache,target=/opt/sdkmanArchives/ \
        echo -e "\e[93m**** Installs SDKMan, Java JDKs and Maven3 ****\e[38;5;241m" && \
        curl -s "https://get.sdkman.io" | bash && \
        mkdir -p /home/jovyan/.sdkman/archives/ && \
        ln -s /opt/sdkmanArchives/ /home/jovyan/.sdkman/archives/ && \
        echo "sdkman_auto_answer=true" > $HOME/.sdkman/etc/config && \
    	source "$HOME/.sdkman/bin/sdkman-init.sh" && \
    	sdk install java && \
    	sdk install maven && \
    	# sdk flush && \
    	groupadd sdk && \
    	chgrp -R sdk $SDKMAN_DIR &&\
    	chmod 770 -R $SDKMAN_DIR && \	
    	adduser $NB_USER sdk && \
    	# sdk flush && \
    	# sdk flush broadcast && \
    	fix-permissions /home/$NB_USER/.sdkman
    
    RUN echo \
        "<settings xmlns='http://maven.apache.org/SETTINGS/1.2.0' \
        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' \
        xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd'> \
            <localRepository>\${user.home}/work/.m2/repository</localRepository> \
        </settings>" \
        > $HOME/.sdkman/candidates/maven/current/conf/settings.xml
    
    ENV NEEDED_WORK_DIRS "$NEEDED_WORK_DIRS .m2"
    
    RUN echo '#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!' >> $HOME/.zshenv && \
        echo 'export SDKMAN_DIR="$HOME/.sdkman"' >> $HOME/.zshenv && \
        echo '[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"' >> $HOME/.zshenv
    
    SHELL ["/bin/zsh","-l","-c"]
    
    # Install PlantUML
    RUN curl -L https://repo1.maven.org/maven2/net/sourceforge/plantuml/plantuml/${PLANTUML_VERSION}/plantuml-${PLANTUML_VERSION}.jar -o /usr/local/bin/plantuml.jar && \
        echo "$PLANTUML_SHA1 */usr/local/bin/plantuml.jar" | sha1sum -c - 
    
    COPY dependencies/* "$HOME/lib/"
    
    # Adds Java and Maven to the user path
    ENV PATH=/home/jovyan/.sdkman/candidates/maven/current/bin:/home/jovyan/.sdkman/candidates/java/current/bin:$PATH
    
    USER $NB_UID