ソースを参照

Major change in building docker images - prebuild common things (R, most importantly) from Dockerfile21 image, and use Dockerfile to adapt to particular setup (user Id, say). Updating labkey-compose22.yaml, buildLabkey.sh, pushLabkey.sh and README.md

Andrej 3 週間 前
コミット
61e0dca23a
6 ファイル変更44 行追加80 行削除
  1. 11 0
      README.md
  2. 4 2
      bin/buildLabkey.sh
  3. 7 2
      bin/pushLabkey.sh
  4. 2 4
      config/labkey-compose22.yaml
  5. 6 38
      config/web/Dockerfile
  6. 14 34
      config/web/Dockerfile21

+ 11 - 0
README.md

@@ -130,6 +130,17 @@ If you have trouble with initial setup, the base can be reset by deleting everyt
 ### Expected errors
   
 Errors of the type `500: Unexpected server error` are common and related 
+
+# Pre-building images
+
+In the latest version, images can be pre-built using docker hub as a repository for such images lacking adaptation to individual working environment.
+
+To create such images, do
+```bash
+$ docker build -f config/web/Dockerfile21 -t andrejstuden/nix:x21 config/web
+$ docker login -u andrejstuden docker.io
+$ docker push andrejstuden/nix:x21
+```
   
 [docker]: https://docs.docker.com/engine/install/
 [dockerCompose]: https://docs.docker.com/compose/install/

+ 4 - 2
bin/buildLabkey.sh

@@ -1,6 +1,8 @@
 #!/bin/bash
 
 . $(dirname $0)/env.sh
-docker network create -d bridge $NETWORK
-$DOCKERCOMPOSE -f $COMPOSE up -d --build;
+
+echo ${GROUP_ID}
+$DOCKERCOMPOSE -f $COMPOSE build;
+
 

+ 7 - 2
bin/pushLabkey.sh

@@ -1,6 +1,11 @@
 #!/bin/bash
 
 . $(dirname $0)/env.sh
-docker log -u andrejstuden docker.io
-$DOCKERCOMPOSE -f $COMPOSE push;
+echo 'docker log -u andrejstuden docker.io'
+echo 'docker build -f $DOCKERFILE -t andrejstuden/nix:$TAG $CONTEXT'
+echo 'docker push andrejstuden/nix:$TAG'
+echo 'Example setup'
+echo 'DOCKERFILE=$HOME/labkeyDocker/config/web/Dockerfile21'
+echo 'TAG=x21'
+echo 'CONTEXT=$HOME/labkeyDocker/config/web'
 

+ 2 - 4
config/labkey-compose22.yaml

@@ -23,16 +23,14 @@ services:
   labkey-web:
     depends_on:
         - labkey-db
-    #image: tomcat:9-jdk17-temurin
-    #
 
     build: 
             context: ./web
-            dockerfile: Dockerfile21
+            dockerfile: Dockerfile
             args:
+                    XTAG: x21
                     USER_ID: ${USER_ID}
                     GROUP_ID: ${GROUP_ID}
-    image: andrejstuden/nix:v21
 
     volumes:
       - ${LABKEY_DIR}:/usr/local/labkey

+ 6 - 38
config/web/Dockerfile

@@ -1,14 +1,12 @@
-FROM tomcat:9-jdk17-temurin-jammy
+#modify to proper user
+ARG XTAG
+
+FROM andrejstuden/nix:${XTAG}
 
 ARG USER_ID
 ARG GROUP_ID
-ARG DEBR="deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/"
-ARG RKEY=https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc 
-ARG GPGKEY=/etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 
-
-
-RUN apt-get update && apt-get install -y sudo;
 
+RUN echo "XTAG=${XTAG}, USER_ID=${USER_ID}, GROUP_ID=${GROUP_ID}"
 RUN addgroup --gid ${GROUP_ID} labkey
 RUN adduser --gecos 'LabKey' --uid ${USER_ID} --gid ${GROUP_ID} --disabled-password labkey 
 RUN echo 'labkey ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
@@ -16,38 +14,8 @@ RUN usermod -G root,sudo labkey
 
 USER labkey
 
-RUN sudo apt-get update \
-   && sudo apt-get install -y dirmngr gnupg apt-transport-https\
-      ca-certificates software-properties-common wget\
-	&& wget -qO- $RKEY | sudo tee -a $GPGKEY\
-	&& sudo add-apt-repository "${DEBR}"\
-	&& sudo apt-get update --fix-missing\
-	&& sudo apt-get install -y r-base \
-   && sudo apt-get install -y git libcurl4-openssl-dev libxml2-dev libssl-dev \
-      libfontconfig1-dev  libharfbuzz-dev libfribidi-dev libtiff5-dev\ 
-	&& sudo rm -rf /var/lib/apt/lists/*
-
-#prepare directory where files will be mapped 
 RUN sudo mkdir -p /data/labkey && \
 	sudo chown -R labkey:labkey /data/labkey && \
 	sudo chown -R labkey:labkey /usr/local/tomcat 
 
-#install (labkey local) R packages and dependencies
-RUN mkdir -p /home/labkey/R/site-library \
-   && export R_LIBS=/home/labkey/R/site-library \
-   && echo ${R_LIBS} \
-   && R -e 'install.packages("devtools")' \
-   && R -e 'install.packages("ggplot2")' \
-   && R -e 'install.packages("Rlabkey")' \
-   && R -e 'install.packages("ggsurvfit")' \
-   && R -e 'install.packages("ggalluvial")' \
-   && R -e 'install.packages("gridExtra")' \
-   && R -e 'install.packages("comprehenr")' \
-   && R -e 'install.packages("ggsci")' \
-   && R -e 'install.packages("paletteer")' \
-   && R -e 'install.packages("tidyverse")'\
-   && R -e 'install.packages("swimplot")'\
-   && R -e 'install.packages("gtsummary")'
-
-
-LABEL "name"="labkey22"
+LABEL "name"="labkey"

+ 14 - 34
config/web/Dockerfile21

@@ -1,44 +1,28 @@
-FROM tomcat:9-jdk17-temurin-jammy
-
-ARG USER_ID
-ARG GROUP_ID
+FROM tomcat:9-jdk17-temurin-jammy 
 
 RUN apt-get update && apt-get install -y sudo;
 
-RUN addgroup --gid ${GROUP_ID} labkey
-RUN adduser --gecos 'LabKey' --uid ${USER_ID} --gid ${GROUP_ID} --disabled-password labkey 
-RUN echo 'labkey ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
-RUN usermod -G root,sudo labkey
-
-USER labkey
-
 ARG RKEY=https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc 
 ARG GPGKEY=/etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 
-RUN sudo apt-get update && sudo apt-get install -y \
+RUN apt-get update && apt-get install -y \
 		dirmngr \
         	gnupg \
 		apt-transport-https \
 		ca-certificates \
 		software-properties-common \
 	&& wget -qO- $RKEY | sudo tee -a $GPGKEY\
-	&& sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/"\
-	&& sudo apt-get update --fix-missing\
-	&& sudo apt-get install -y r-base \
-	&& sudo apt-get install -y git \
-	&& sudo apt-get install -y libcurl4-openssl-dev libxml2-dev libssl-dev libfontconfig1-dev  libharfbuzz-dev libfribidi-dev libtiff5-dev git \
-	&& sudo rm -rf /var/lib/apt/lists/* 
-
-
-RUN sudo mkdir -p /data/labkey && \
-	sudo chown -R labkey:labkey /data/labkey && \
-	sudo chown -R labkey:labkey /usr/local/tomcat 
-
-
-
-RUN mkdir -p /home/labkey/R/site-library \
-   && export R_LIBS=/home/labkey/R/site-library \
-   && echo ${R_LIBS} \
-   && R -e 'install.packages("devtools")' \
+	&& add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/"\
+	&& apt-get update --fix-missing\
+	&& apt-get install -y r-base \
+	&& apt-get install -y git \
+	&& apt-get install -y libcurl4-openssl-dev libxml2-dev libssl-dev libfontconfig1-dev  libharfbuzz-dev libfribidi-dev libtiff5-dev git \
+	&& rm -rf /var/lib/apt/lists/* 
+
+#run this as root!
+#RUN mkdir -p /home/labkey/R/site-library \
+#   && export R_LIBS=/home/labkey/R/site-library \
+#   && echo ${R_LIBS} \
+RUN R -e 'install.packages("devtools")' \
    && R -e 'install.packages("ggplot2")' \
    && R -e 'install.packages("Rlabkey")' \
    && R -e 'install.packages("ggsurvfit")' \
@@ -50,7 +34,3 @@ RUN mkdir -p /home/labkey/R/site-library \
    && R -e 'install.packages("tidyverse")'\
    && R -e 'install.packages("swimplot")'\
    && R -e 'install.packages("gtsummary")'
-
-
-
-LABEL "name"="labkey21"