From 375c119ff3b746483aff6b84f194856cc3d6c6bd Mon Sep 17 00:00:00 2001 From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu> Date: Mon, 18 Mar 2024 17:36:00 +0100 Subject: [PATCH] [EDELIVERY-11518] add option Adotpion JDK 8 and JDK 11 to start tomcat and springboot images. --- .../docker-compose.yml | 2 ++ .../domismp-tomcat-mysql/docker-compose.yml | 2 ++ .../domismp-springboot-mysql/Dockerfile | 22 ++++++++++++--- .../images/domismp-springboot-mysql/README.md | 4 ++- .../domismp-springboot-mysql/entrypoint.sh | 6 ++++- .../images/domismp-tomcat-mysql/Dockerfile | 27 ++++++++++++++----- .../images/domismp-tomcat-mysql/README.md | 7 ++--- .../docker-compose.build.yml | 2 +- .../images/domismp-tomcat-mysql/entrypoint.sh | 7 +++++ 9 files changed, 64 insertions(+), 15 deletions(-) diff --git a/domismp-tests/domismp-docker/compose/domismp-springboot-mysql/docker-compose.yml b/domismp-tests/domismp-docker/compose/domismp-springboot-mysql/docker-compose.yml index 2db2aab13..09b1785f6 100644 --- a/domismp-tests/domismp-docker/compose/domismp-springboot-mysql/docker-compose.yml +++ b/domismp-tests/domismp-docker/compose/domismp-springboot-mysql/docker-compose.yml @@ -4,6 +4,8 @@ services: image: ${IMAGE_TAG:-edeliverytest}/${IMAGE_SMP_SPRINGBOOT_MYSQL}:${SMP_VERSION} hostname: smp-springboot-mysql.local environment: +# example to start it with JDK 8 +# - JDK_VERSION=8 - SMP_INIT_PROPERTIES=smp.passwordPolicy.expired.forceChange=false ||smp.automation.authentication.external.tls.SSLClientCert.enabled=true ||smp.cluster.enabled=false diff --git a/domismp-tests/domismp-docker/compose/domismp-tomcat-mysql/docker-compose.yml b/domismp-tests/domismp-docker/compose/domismp-tomcat-mysql/docker-compose.yml index eb1cd7d76..d3f2da2ce 100644 --- a/domismp-tests/domismp-docker/compose/domismp-tomcat-mysql/docker-compose.yml +++ b/domismp-tests/domismp-docker/compose/domismp-tomcat-mysql/docker-compose.yml @@ -4,6 +4,8 @@ services: image: ${IMAGE_TAG:-edeliverytest}/${IMAGE_SMP_TOMCAT_MYSQL}:${SMP_VERSION} hostname: eulogin.protected.smp.local environment: +# example to start it with JDK 8 +# - JDK_VERSION=8 - SMP_INIT_PROPERTIES=smp.passwordPolicy.expired.forceChange=false ||smp.automation.authentication.external.tls.SSLClientCert.enabled=true ||smp.cluster.enabled=false diff --git a/domismp-tests/domismp-docker/images/domismp-springboot-mysql/Dockerfile b/domismp-tests/domismp-docker/images/domismp-springboot-mysql/Dockerfile index 6bf8bb62c..d12384e0b 100755 --- a/domismp-tests/domismp-docker/images/domismp-springboot-mysql/Dockerfile +++ b/domismp-tests/domismp-docker/images/domismp-springboot-mysql/Dockerfile @@ -18,8 +18,17 @@ ENV SMP_HOME=/opt/smp \ # set debug JPDA_ADDRESS="5005" \ JPDA_TRANSPORT="dt_socket" \ - SMP_PORT=8084 + SMP_PORT=8084 \ + JAVA_8_VERSION="jdk8u402-b06" \ + JAVA_8_URL_FILENAME="OpenJDK8U-jdk_x64_linux_hotspot_8u402b06.tar.gz" \ + JAVA_8_SHA256=fcfd08abe39f18e719e391f2fc37b8ac1053075426d10efac4cbf8969e7aa55e \ + JAVA_11_VERSION="jdk-11.0.22+7" \ + JAVA_11_URL_FILENAME="OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz" \ + JAVA_11_SHA256=25cf602cac350ef36067560a4e8042919f3be973d419eac4d839e2e0000b2cc8 \ + JDK_VERSION=11 +# set default java home environment variable +ENV JAVA_HOME=/opt/java/${JAVA_11_VERSION}/ # Exposing ports used in entrypoint.sh .. # - 3306 Mysql port # - 8080 springboot port @@ -34,12 +43,20 @@ RUN apt-get update -qqy \ && apt-get upgrade -qqy \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ mysql-server \ - openjdk-8-jdk \ + ca-certificates \ locales\ + wget \ curl \ unzip \ haveged \ && rm -rf /var/lib/apt/lists/* +RUN mkdir -p /opt/java \ + && wget -O /opt/java/${JAVA_11_VERSION}.tar.gz https://github.com/adoptium/temurin11-binaries/releases/download/${JAVA_11_VERSION}/${JAVA_11_URL_FILENAME} \ + && wget -O /opt/java/${JAVA_8_VERSION}.tar.gz https://github.com/adoptium/temurin8-binaries/releases/download/${JAVA_8_VERSION}/${JAVA_8_URL_FILENAME} \ + && sha256sum /opt/java/${JAVA_11_VERSION}.tar.gz | grep ${JAVA_11_SHA256} \ + && sha256sum /opt/java/${JAVA_8_VERSION}.tar.gz | grep ${JAVA_8_SHA256} \ + && tar -xvf /opt/java/${JAVA_11_VERSION}.tar.gz -C /opt/java/ \ + && tar -xvf /opt/java/${JAVA_8_VERSION}.tar.gz -C /opt/java/ RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 \ # set user && addgroup mysql mysql \ @@ -47,7 +64,6 @@ RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF && useradd -s /bin/false -g smp -d ${SMP_HOME} smp \ && mkdir -p $SMP_HOME/logs \ && cd $SMP_HOME \ - && export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") \ && echo "server.port=${SMP_PORT}" > $SMP_HOME/application.properties ADD ./artefacts /tmp/artefacts diff --git a/domismp-tests/domismp-docker/images/domismp-springboot-mysql/README.md b/domismp-tests/domismp-docker/images/domismp-springboot-mysql/README.md index 548e63b38..3103a10ce 100755 --- a/domismp-tests/domismp-docker/images/domismp-springboot-mysql/README.md +++ b/domismp-tests/domismp-docker/images/domismp-springboot-mysql/README.md @@ -3,8 +3,10 @@ DomiSMP with sprinboot and mysql database. The Image is intended for internal testing of the DomiSMP snapshots builds. The images should not be used in production environment. +The image is shipped with jdk 8 and 11. By default the jdk 11 is used, but it can be changed by setting the environment +variable JDK_VERSION=8 to start the container with JAVA_HOME pointing to jdk 8. -Image contains SMP deployed on the spring Embedded Tomcat 9 server with the MYSQL. +Image contains SMP deployed on the spring Embedded Tomcat 9 server with the MySQL 8. # How to build diff --git a/domismp-tests/domismp-docker/images/domismp-springboot-mysql/entrypoint.sh b/domismp-tests/domismp-docker/images/domismp-springboot-mysql/entrypoint.sh index ee88b363c..5c65aaee2 100755 --- a/domismp-tests/domismp-docker/images/domismp-springboot-mysql/entrypoint.sh +++ b/domismp-tests/domismp-docker/images/domismp-springboot-mysql/entrypoint.sh @@ -2,6 +2,10 @@ #set -e +# set java home +if [ "${JDK_VERSION}" == "8" ]; then + export JAVA_HOME=/opt/java/${JAVA_8_VERSION} +fi # parameters MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-"root"} SMP_DB_USER=${SMP_DB_USER:-"smp"} @@ -141,7 +145,7 @@ init_mysql init_smp_properties init_smp -echo '[INFO] start running SMP' +echo '[INFO] start running SMP with JAVA version:' "${JAVA_HOME}/bin/java" -version cd $SMP_HOME/ ls -ltr diff --git a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/Dockerfile b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/Dockerfile index 7a987109d..198fa0b95 100755 --- a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/Dockerfile +++ b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/Dockerfile @@ -12,6 +12,12 @@ ENV SMP_HOME=/opt/smp \ TOMCAT_VERSION=9.0.73 \ TOMCAT_NAVITVE_VERSION=1.2.36 \ TOMCAT_SHA512=4deac84d6f8ff147d0060605e85fd2c0bf92b9eb622e426d4acc19d0cd4fc0d46a394e01e5664076a5e4f1c39ae14fc2238ebee53a7779bf086540f6dc4967c8 \ + JAVA_8_VERSION="jdk8u402-b06" \ + JAVA_8_URL_FILENAME="OpenJDK8U-jdk_x64_linux_hotspot_8u402b06.tar.gz" \ + JAVA_8_SHA256=fcfd08abe39f18e719e391f2fc37b8ac1053075426d10efac4cbf8969e7aa55e \ + JAVA_11_VERSION="jdk-11.0.22+7" \ + JAVA_11_URL_FILENAME="OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz" \ + JAVA_11_SHA256=25cf602cac350ef36067560a4e8042919f3be973d419eac4d839e2e0000b2cc8 \ SMP_DB_SCHEMA=smp \ SMP_DB_USER=smp \ SMP_INIT_PROPERTY_DELIMITER="||" \ @@ -36,6 +42,9 @@ ENV SMP_HOME=/opt/smp \ JPDA_ADDRESS="5005" \ JPDA_TRANSPORT="dt_socket" +# set tomcat and java home environment variables +ENV TOMCAT_HOME=/opt/apache-tomcat-$TOMCAT_VERSION \ + JAVA_HOME=/opt/java/${JAVA_11_VERSION}/ # Exposing ports used in entrypoint.sh .. # - 3306 Mysql port @@ -45,8 +54,6 @@ ENV SMP_HOME=/opt/smp \ # - JDPA debug port EXPOSE 3306 8080 6901 53 5005 - - VOLUME ["/data"] # install utils, java, mysql \ @@ -54,9 +61,10 @@ RUN apt-get update -qqy \ && apt-get upgrade -qqy \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ mysql-server \ - openjdk-8-jdk \ locales\ curl \ + ca-certificates \ + wget \ unzip \ bind9 \ bind9utils \ @@ -67,7 +75,15 @@ RUN apt-get update -qqy \ libssl-dev \ gcc \ make \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/* +RUN mkdir -p /opt/java \ + && wget -O /opt/java/${JAVA_11_VERSION}.tar.gz https://github.com/adoptium/temurin11-binaries/releases/download/${JAVA_11_VERSION}/${JAVA_11_URL_FILENAME} \ + && wget -O /opt/java/${JAVA_8_VERSION}.tar.gz https://github.com/adoptium/temurin8-binaries/releases/download/${JAVA_8_VERSION}/${JAVA_8_URL_FILENAME} \ + && sha256sum /opt/java/${JAVA_11_VERSION}.tar.gz | grep ${JAVA_11_SHA256} \ + && sha256sum /opt/java/${JAVA_8_VERSION}.tar.gz | grep ${JAVA_8_SHA256} \ + && tar -xvf /opt/java/${JAVA_11_VERSION}.tar.gz -C /opt/java/ \ + && tar -xvf /opt/java/${JAVA_8_VERSION}.tar.gz -C /opt/java/ + RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 \ # set user && addgroup mysql mysql \ @@ -106,8 +122,7 @@ RUN echo "smp.jdbc.driver=com.mysql.cj.jdbc.Driver" > $SMP_HOME/apache-tomcat- && mkdir /opt/smlconf/bind # enable native TLS on tomcat -RUN export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") \ - && cd $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/bin \ +RUN cd $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/bin \ && tar xfz tomcat-native.tar.gz \ && cd tomcat-native-${TOMCAT_NAVITVE_VERSION}-src/native \ && ./configure && make && make install diff --git a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/README.md b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/README.md index 0a92bf8d5..03641f192 100755 --- a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/README.md +++ b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/README.md @@ -1,8 +1,9 @@ # Test and Domo SMP docker image The Image is intended for internal testing of the DomiSMP snapshots builds. The images should not -be used in production environment. - +be used in production environment. +The image is shipped with jdk 8 and 11. By default the jdk 11 is used, but it can be changed by setting the environment +variable JDK_VERSION=8 to start the container with JAVA_HOME pointing to jdk 8. # Image build @@ -16,7 +17,7 @@ be used in production environment. example: - docker run --name smp --rm -it -p 8180:8080 -p 3316:3306 edelivery-docker.devops.tech.ec.europa.eu/edeliverytest/smp-sml-tomcat-mysql:5.0-SNAPSHOT + docker run --name smp --rm -it -p 8180:8080 -p 3316:3306 -e JDK_VERSION=8 edelivery-docker.devops.tech.ec.europa.eu/edeliverytest/smp-sml-tomcat-mysql:5.0-SNAPSHOT ## SMP (param: -p 8180:8080 ) url: http://localhost:8180/smp diff --git a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/docker-compose.build.yml b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/docker-compose.build.yml index 802e12990..aa1ebef47 100644 --- a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/docker-compose.build.yml +++ b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/docker-compose.build.yml @@ -3,7 +3,7 @@ # version: '3.8' services: - domismp-springboot-mysql: + domismp-tomcat-mysql: image: ${IMAGE_TAG:-edeliverytest}/${IMAGE_SMP_TOMCAT_MYSQL}:${SMP_VERSION} build: context: . diff --git a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/entrypoint.sh b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/entrypoint.sh index b64cd3de6..f067f1a3a 100755 --- a/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/entrypoint.sh +++ b/domismp-tests/domismp-docker/images/domismp-tomcat-mysql/entrypoint.sh @@ -22,6 +22,12 @@ if [ ! -d ${DATA_DIR} ]; then mkdir -p ${DATA_DIR} fi +# set java home +if [ "${JDK_VERSION}" == "8" ]; then + export JAVA_HOME=/opt/java/${JAVA_8_VERSION} +fi + + init_tomcat() { # add java code coverage agent to image if [ -e /opt/jacoco/jacoco-agent.jar ]; then @@ -263,6 +269,7 @@ init_smp echo "Starting named..." $(which named) -u ${BIND_USER} &>$BIND_DATA_DIR/bind-console.out & +echo "[INFO] JAVA_HOME: $JAVA_HOME" echo '[INFO] start running SMP' chmod u+x $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/bin/*.sh cd $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/ -- GitLab