From 46c556838a0e29d1231acbfb8da5328f49b97ba1 Mon Sep 17 00:00:00 2001 From: Andrea Dell'Amico Date: Mon, 9 Aug 2021 18:04:31 +0200 Subject: [PATCH] First commit. --- .dockerignore | 25 +++++++++++++ Dockerfile | 26 ++++++++++++++ README.md | 14 +++++++- docker-compose.debug.yml | 13 +++++++ docker-compose.yml | 10 ++++++ docs/docker-general-best-practices.md | 10 ++++++ src/gcube-start-container.sh | 52 +++++++++++++++++++++++++++ 7 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.debug.yml create mode 100644 docker-compose.yml create mode 100644 docs/docker-general-best-practices.md create mode 100644 src/gcube-start-container.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b3bc7e4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +README.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9093525 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +# The latest is 7u221. An exact build can be specified +FROM openjdk:7-slim +ARG JAVA_OPTS="-Xms2000M -Xmx2800M" +ENV JAVA_OPTS=$JAVA_OPTS +ENV J2SDKDIR=/docker-java-home +ENV J2REDIR=/docker-java-home/jre +ENV PATH=/docker-java-home/bin:/docker-java-home/db/bin:/docker-java-home/jre/bin:$PATH +ENV JAVA_HOME=/docker-java-home +ENV DERBY_HOME=/docker-java-home/db +ENV USER=gcube +ENV GLOBUS_LOCATION=/home/gcube/gCore +ENV ANT_HOME=$GLOBUS_LOCATION +ENV PATH=$GLOBUS_LOCATION/bin:$PATH +#ENV EXIST_HOME= +#ENV GLOBUS_OPTIONS="-Dexist.home=$EXIST_HOME" +ENV GLOBUS_OPTIONS="" + +RUN adduser --shell /usr/sbin/nologin gcube +WORKDIR /home/gcube +RUN apt-get update && apt-get install -y wget && cd /home/gcube && wget https://nexus.d4science.org/nexus/content/repositories/gcube-staging-gcore/org/gcube/distribution/ghn-distribution/7.0.1-4.16.0-144317/ghn-distribution-7.0.1-4.16.0-144317.tar.gz && tar zxf ghn-distribution-7.0.1-4.16.0-144317.tar.gz && rm -f ghn-distribution-7.0.1-4.16.0-144317.tar.gz && mkdir -p /home/gcube/gCore/logs /home/gcube/gCore/tmp /home/gcube/gCore/config /home/gcube/gCore/etc && chown gcube /home/gcube/gCore/logs /home/gcube/gCore/tmp /home/gcube/gCore/config /home/gcube/gCore/etc +COPY src/gcube-start-container.sh /home/gcube/gCore/bin/gcore-start-container +RUN chmod 755 /home/gcube/gCore/bin/gcore-start-container +EXPOSE 8080 +ENTRYPOINT exec /home/gcube/gCore/bin/gcore-start-container +# For Spring-Boot project, use the entrypoint below to reduce Tomcat startup time. +#ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar ansibleplaybookisregistryservice.jar diff --git a/README.md b/README.md index 974c8e2..d769724 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ # ansible-playbook-is-registry-service -Playbook that creates a docker container with the IS distribution \ No newline at end of file +Playbook that creates a docker container with the IS distribution + +## Build the imaage + +```shell +$ docker build -t is-registry-service:v1-dev . +``` + +## Run the image + +```shell +$ docker container run is-registry-service:v1-dev --name is-registry +``` diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml new file mode 100644 index 0000000..9ae6485 --- /dev/null +++ b/docker-compose.debug.yml @@ -0,0 +1,13 @@ +version: '3.4' + +services: + ansibleplaybookisregistryservice: + image: ansibleplaybookisregistryservice + build: + context: . + dockerfile: ./Dockerfile + environment: + JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y + ports: + - 8080:8080 + - 5005:5005 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..43ec2ec --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3.4' + +services: + ansibleplaybookisregistryservice: + image: ansibleplaybookisregistryservice + build: + context: . + dockerfile: ./Dockerfile + ports: + - 8080:8080 diff --git a/docs/docker-general-best-practices.md b/docs/docker-general-best-practices.md new file mode 100644 index 0000000..fd26c10 --- /dev/null +++ b/docs/docker-general-best-practices.md @@ -0,0 +1,10 @@ +# Tips, links to the documentation + +## Official documentation + + + + + + +Some hints on how to debug a docker image: diff --git a/src/gcube-start-container.sh b/src/gcube-start-container.sh new file mode 100644 index 0000000..ae46304 --- /dev/null +++ b/src/gcube-start-container.sh @@ -0,0 +1,52 @@ +#! /bin/sh + +if [ -z "$GLOBUS_LOCATION" ] +then + echo "Cannot start the GHN, GLOBUS_LOCATION var is not set!" + exit 1 +fi + +if [ ! -d "$GLOBUS_LOCATION/config" ] +then + echo "Cannot start the GHN, GLOBUS_LOCATION var is wrongly set!" + exit 1 +fi + +CP=.:${GLOBUS_LOCATION}:${GLOBUS_LOCATION}/config:${GLOBUS_LOCATION}/build/classes +for i in ${GLOBUS_LOCATION}/lib/*.jar +do + CP=$CP:"$i" +done + +if [ -z "$CLASSPATH" ] ; then + CLASSPATH=$CP +else + CLASSPATH=$CP:$CLASSPATH +fi +export CLASSPATH + +#container's options +export GCORE_START_OPTIONS="$GCORE_START_OPTIONS -Djava.util.logging.config.file=$GLOBUS_LOCATION/logging.jul.properties $JAVA_OPTS -Djava.io.tmpdir=$GLOBUS_LOCATION/tmp -Djava.security.egd=file:///dev/urandom" + +mode="-nosec" +unset newargs + +for arg in "$@" +do + if [ "$arg" = "-sec" ]; then + unset mode + else + newargs="$newargs $arg" + fi +done + +newargs="$mode $newargs" + +[ -e "$GLOBUS_LOCATION/tmp" ] || mkdir -p $GLOBUS_LOCATION/tmp + +#clean up the services' state if needed +[ -f "$GLOBUS_LOCATION/config/GHNProfile.xml" ] || rm -rf ~/.gcore + +cd $GLOBUS_LOCATION +echo "gCore is running with ($newargs) and logging into logs/container.log..." +$GLOBUS_LOCATION/bin/gcore-start-container-daemon $newargs