From 6cdb4e0626623d621b03e26f4bbf56f2afc19d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Todor=20Kondi=C4=87?= <kontrapunkt@uclmail.net> Date: Fri, 24 Feb 2023 12:53:48 +0100 Subject: [PATCH] docker, .gitlab-ci: Reorganise building of images. --- .gitlab-ci.yml | 147 +++++++++++++++++++++++++-------------- Dockerfile | 4 +- docker/base/Dockerfile | 25 +++---- docker/isb401/Dockerfile | 34 +++++---- docker/ssuser/Dockerfile | 10 +++ 5 files changed, 133 insertions(+), 87 deletions(-) create mode 100644 docker/ssuser/Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f936b16..addaab9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,79 +25,124 @@ services: - docker:23.0.1-dind stages: + - dep_images - build - test - release variables: DOCKER_TLS_CERTDIR: "/certs" + DEP_ROOT: $CI_REGISTRY_IMAGE/dep + BASE_IMAGE: $CI_REGISTRY_IMAGE/dep/base:latest + SSUSER_IMAGE: $CI_REGISTRY_IMAGE/dep/ssuser:latest CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG CONTAINER_TEST_ISB401_IMAGE: $CI_REGISTRY_IMAGE:isb401_$CI_COMMIT_REF_SLUG CONTAINER_RELEASE_ISB401_IMAGE: $CI_REGISTRY_IMAGE:isb401_$CI_COMMIT_TAG -build: - tags: - - docker - - $RUNNER_TAG - stage: build - before_script: - # This did not work, so mounting authentication JSON on the side - # of the runner. - # - echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" --username "$CI_REGISTRY_USER" --password-stdin - script: - - docker build --pull -t $CONTAINER_TEST_IMAGE . - - docker push $CONTAINER_TEST_IMAGE -build-isb401: +base-image: tags: - docker - $RUNNER_TAG - stage: build + stage: dep_images + rules: + # - changes: + # - docker/base/Dockerfile script: - - cp docker/isb401/Dockerfile . - - docker build --pull -t $CONTAINER_TEST_ISB401_IMAGE . - - docker push $CONTAINER_TEST_ISB401_IMAGE + - cd docker/base + - docker build --pull -t $BASE_IMAGE . + - docker push $BASE_IMAGE -test: +ssuser-image: tags: - docker - $RUNNER_TAG - stage: test + stage: dep_images + needs: + - job: base-image + optional: true + rules: + # - changes: + # - docker/ssuser/Dockerfile script: - - docker pull $CONTAINER_TEST_IMAGE - - docker run $CONTAINER_TEST_IMAGE test + - cd docker/ssuser + - docker build --pull -t $SSUSER_IMAGE . + - docker push $SSUSER_IMAGE -test-isb401: - tags: - - docker - - $RUNNER_TAG - stage: test - script: - - docker pull $CONTAINER_TEST_ISB401_IMAGE - - docker run $CONTAINER_TEST_ISB401_IMAGE test -release-image: - tags: - - docker - - $RUNNER_TAG - stage: release - script: - - docker pull $CONTAINER_TEST_IMAGE - - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - - docker push $CONTAINER_RELEASE_IMAGE - rules: - - if: $CI_COMMIT_TAG =~ /^v[0-9]+.[0-9]+.[0-9]+/ -release-isb401: - tags: - - docker - - $RUNNER_TAG - stage: release - script: - - docker pull $CONTAINER_TEST_ISB401_IMAGE - - docker tag $CONTAINER_TEST_ISB401_IMAGE $CONTAINER_RELEASE_ISB401_IMAGE - - docker push $CONTAINER_RELEASE_ISB401_IMAGE - rules: - - if: $CI_COMMIT_TAG =~ /^v[0-9]+.[0-9]+.[0-9]+/ +# build: +# tags: +# - docker +# - $RUNNER_TAG +# stage: build +# before_script: +# # This did not work, so mounting authentication JSON on the side +# # of the runner. +# # - echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" --username "$CI_REGISTRY_USER" --password-stdin +# script: +# - docker build --pull -t $CONTAINER_TEST_IMAGE . +# - docker push $CONTAINER_TEST_IMAGE +# only: +# - devel +# - master + +# build-isb401: +# tags: +# - docker +# - $RUNNER_TAG +# stage: build +# script: +# - cp docker/isb401/Dockerfile . +# - docker build --pull -t $CONTAINER_TEST_ISB401_IMAGE . +# - docker push $CONTAINER_TEST_ISB401_IMAGE +# only: +# - devel +# - master + +# test: +# tags: +# - docker +# - $RUNNER_TAG +# stage: test +# script: +# - docker pull $CONTAINER_TEST_IMAGE +# - docker run $CONTAINER_TEST_IMAGE test + +# test-isb401: +# tags: +# - docker +# - $RUNNER_TAG +# stage: test +# script: +# - docker pull $CONTAINER_TEST_ISB401_IMAGE +# - docker run $CONTAINER_TEST_ISB401_IMAGE test +# only: +# - devel +# - master + +# release-image: +# tags: +# - docker +# - $RUNNER_TAG +# stage: release +# script: +# - docker pull $CONTAINER_TEST_IMAGE +# - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE +# - docker push $CONTAINER_RELEASE_IMAGE +# rules: +# - if: $CI_COMMIT_TAG =~ /^v[0-9]+.[0-9]+.[0-9]+/ + +# release-isb401: +# tags: +# - docker +# - $RUNNER_TAG +# stage: release +# script: +# - docker pull $CONTAINER_TEST_ISB401_IMAGE +# - docker tag $CONTAINER_TEST_ISB401_IMAGE $CONTAINER_RELEASE_ISB401_IMAGE +# - docker push $CONTAINER_RELEASE_ISB401_IMAGE +# rules: +# - if: $CI_COMMIT_TAG =~ /^v[0-9]+.[0-9]+.[0-9]+/ diff --git a/Dockerfile b/Dockerfile index 2c27267..18b4f02 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM gitlab.lcsb.uni.lu:4567/eci/shinyscreen:base +FROM gitlab.lcsb.uni.lu:4567/eci/shinyscreen:ssuser MAINTAINER todor.kondic@uni.lu EXPOSE 5432 +ENV SS_MF_DB="PubChemLite_exposomics.csv" ENV SS_CPU 2 -ENV SS_MF_JAR /usr/local/bin/MetFragCommandLine.jar ADD . shinyscreen/ RUN R CMD build shinyscreen RUN R CMD INSTALL shinyscreen diff --git a/docker/base/Dockerfile b/docker/base/Dockerfile index cf8a4d6..80f24b8 100644 --- a/docker/base/Dockerfile +++ b/docker/base/Dockerfile @@ -1,11 +1,11 @@ FROM ubuntu:jammy-20230126 MAINTAINER kontrapunkt@uclmail.net ENV SS_MF_DB_DIR="/usr/local/metfrag_db" -ENV SS_MF_DB="PubChemLite_exposomics.csv" +ENV SS_MF_JAR /usr/local/bin/MetFragCommandLine.jar RUN apt-get update RUN apt-get install -y --no-install-recommends apt-utils r-base r-recommended g++ gfortran -RUN apt-get install -y --no-install-recommends curl libxml2-dev libssl-dev libssh2-1-dev zlib1g-dev +RUN apt-get install -y --no-install-recommends curl wget libxml2-dev libssl-dev libssh2-1-dev zlib1g-dev RUN apt-get install -y --no-install-recommends xdg-utils automake autoconf gcc make pkg-config RUN apt-get install -y --no-install-recommends net-tools git-all default-jre-headless zlib1g zlib1g-dev RUN apt-get install -y --no-install-recommends libnetcdf* openbabel libhdf5-1* libhdf5-hl-1* @@ -21,26 +21,19 @@ RUN apt-get install -y --no-install-recommends libpng16-16 libpng-tools libpng-d RUN rm -rf /var/lib/apt/lists/* RUN rm -rf /tmp/* - -RUN R -e 'install.packages("enviPat", dependencies=TRUE)' -RUN R -e 'BiocManager::install(c("Rhdf5lib","mzR","MSnbase","RMassBank"),update=F)' -RUN R -e 'devtools::install_git("https://github.com/CDK-R/rinchi", dependencies=F)' -RUN R -e 'devtools::install_git("https://github.com/schymane/RChemMass", dependencies=F)' -#R -e 'devtools::install_git("https://github.com/CDK-R/rcdklibs", dependencies=F)' -#R -e 'devtools::install_git("https://github.com/CDK-R/cdkr", subdir="rcdk", dependencies=F)' - # Add MetFrag. -RUN curl -LJO https://github.com/ipb-halle/MetFragRelaunched/releases/download/v.2.5.0/MetFragCommandLine-2.5.0.jar +RUN curl -LJO https://gitlab.lcsb.uni.lu/eci/shinyscreen_needs/-/raw/master/MetFragCommandLine-2.5.0.jar +# RUN curl -LJO https://github.com/ipb-halle/MetFragRelaunched/releases/download/v.2.5.0/MetFragCommandLine-2.5.0.jar RUN mv MetFragCommandLine-2.5.0.jar /usr/local/bin/MetFragCommandLine.jar RUN chmod 0555 /usr/local/bin/MetFragCommandLine.jar # Add PCL. -RUN curl -LJO https://zenodo.org/record/7576412/files/PubChemLite_exposomics_20230127.csv?download=1 +RUN curl -LJO https://zenodo.org/record/7576412/files/PubChemLite_exposomics_20230127.csv RUN mkdir /usr/local/metfrag_db RUN chmod 0555 /usr/local/metfrag_db RUN mv PubChemLite_exposomics_20230127.csv /usr/local/metfrag_db/PubChemLite_exposomics.csv - - - - +RUN MAKEFILE=j R -e 'install.packages("enviPat", dependencies=TRUE)' +RUN MAKEFILE=j R -e 'BiocManager::install(c("Rhdf5lib","mzR","MSnbase","RMassBank"),update=F)' +RUN MAKEFILE=j R -e 'devtools::install_git("https://github.com/CDK-R/rinchi", dependencies=F)' +RUN MAKEFILE=j R -e 'devtools::install_git("https://github.com/schymane/RChemMass", dependencies=F)' diff --git a/docker/isb401/Dockerfile b/docker/isb401/Dockerfile index 8a815d2..3945783 100644 --- a/docker/isb401/Dockerfile +++ b/docker/isb401/Dockerfile @@ -1,23 +1,8 @@ FROM gitlab.lcsb.uni.lu:4567/eci/shinyscreen:base MAINTAINER todor.kondic@uni.lu -EXPOSE 5432 -ENV SS_CPU 2 -ENV SS_MF_JAR /usr/local/bin/MetFragCommandLine.jar -ADD . shinyscreen/ -RUN R CMD build shinyscreen -RUN R CMD INSTALL shinyscreen -RUN useradd -ms /bin/bash ssuser -RUN cp shinyscreen/runme /home/ssuser/runme -RUN cp -R shinyscreen /home/ssuser -RUN chmod u+x /home/ssuser/runme -RUN chown ssuser /home/ssuser/runme -RUN chown -R ssuser /home/ssuser/shinyscreen -USER ssuser -WORKDIR /home/ssuser -RUN mkdir top_data_dir -RUN mkdir projects -RUN mkdir metfrag_dbs -RUN mkdir users + + + RUN mkdir -p top_data_dir/isb401 RUN mkdir -p projects/isb401 WORKDIR isb401/top_data_dir/isb401 @@ -30,3 +15,16 @@ RUN tar -xf isb401-master.tar.gz RUN cp isb401-master/shinyscreen_files/*.csv /home/ssuser/projects/isb401 RUN R -e 'library(shinyscreen);setwd("~");init(top_data_dir="~/top_data_dir",projects="~/projects",users_dir="~/users",metfrag_db_dir=Sys.getenv("SS_MF_DB_DIR"),metfrag_jar="/usr/local/bin/MetFragCommandLine.jar",save=T,merge=F)' ENTRYPOINT ["/home/ssuser/runme"] + + +ENV SS_MF_JAR /usr/local/bin/MetFragCommandLine.jar +EXPOSE 5432 +ENV SS_CPU 2 +RUN cp shinyscreen/runme /home/ssuser/runme +RUN cp -R shinyscreen /home/ssuser +RUN chmod u+x /home/ssuser/runme +RUN chown ssuser /home/ssuser/runme +RUN chown -R ssuser /home/ssuser/shinyscreen +ADD . shinyscreen/ +RUN R CMD build shinyscreen +RUN R CMD INSTALL shinyscreen diff --git a/docker/ssuser/Dockerfile b/docker/ssuser/Dockerfile new file mode 100644 index 0000000..5350c25 --- /dev/null +++ b/docker/ssuser/Dockerfile @@ -0,0 +1,10 @@ +FROM gitlab.lcsb.uni.lu:4567/eci/shinyscreen:base +MAINTAINER todor.kondic@uni.lu + +RUN useradd -ms /bin/bash ssuser +USER ssuser +WORKDIR /home/ssuser +RUN mkdir top_data_dir +RUN mkdir projects +RUN mkdir metfrag_dbs +RUN mkdir users -- GitLab