diff --git a/Dockerfile b/Dockerfile index 6cbd5c8..22bb953 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 ARG BUILD_IMAGE=gradle:9-jdk21 -ARG RUN_IMAGE=quay.io/wildfly/wildfly:37.0.1.Final-jdk21 +ARG RUN_IMAGE=codecr.jlab.org/acc/iac/containers/java-container:3 ARG ORACLE_DRIVER_PATH=/ojdbc17-23.9.0.25.07 ARG MARIADB_DRIVER_PATH=/mariadb-java-client-3.3.3.jar ARG CUSTOM_CRT_URL="https://ace.jlab.org/acc-ca.crt http://pki.jlab.org/JLabCA.crt" @@ -25,10 +25,12 @@ RUN cd /tmp \ ## Let's minimize layers in final-product by organizing files into a single copy structure RUN mkdir /unicopy \ && cp /app/config/docker-server.env /unicopy \ + && cp /app/config/docker-host.env /unicopy \ && cp /app/scripts/TestOracleConnection.java /unicopy \ && cp /app/scripts/TestMariadbConnection.java /unicopy \ && cp /app/scripts/container-entrypoint.sh /unicopy \ && cp /app/scripts/container-healthcheck.sh /unicopy \ + && cp /app/scripts/devcontainer-setup.sh /unicopy \ && cp /app/scripts/server-setup.sh /unicopy \ && cp /app/scripts/provided-setup.sh /unicopy \ && cp /app/scripts/app-setup.sh /unicopy \ @@ -37,15 +39,16 @@ RUN mkdir /unicopy \ ################## Stage 1 FROM ${RUN_IMAGE} AS runner ARG CUSTOM_CRT_URL -ARG RUN_USER=jboss +ARG RUN_USER=wildfly ARG ORACLE_DRIVER_PATH ARG MARIADB_DRIVER_PATH USER root COPY --from=builder /unicopy / -COPY --from=builder /tmp/server.p12 /opt/jboss/wildfly/standalone/configuration +RUN /devcontainer-setup.sh /docker-host.env +COPY --from=builder /tmp/server.p12 /opt/wildfly/current/standalone/configuration RUN /update-certs-runner.sh ${CUSTOM_CRT_URL} \ && /server-setup.sh /docker-server.env \ - && rm -rf /opt/jboss/wildfly/standalone/configuration/standalone_xml_history + && rm -rf /opt/wildfly/current/standalone/configuration/standalone_xml_history ENTRYPOINT ["/container-entrypoint.sh"] ENV ORACLE_DRIVER_PATH=$ORACLE_DRIVER_PATH ENV MARIADB_DRIVER_PATH=$MARIADB_DRIVER_PATH diff --git a/config/docker-host.env b/config/docker-host.env new file mode 100644 index 0000000..120e8af --- /dev/null +++ b/config/docker-host.env @@ -0,0 +1,9 @@ +WILDFLY_BIND_ADDRESS=0.0.0.0 +WILDFLY_HTTPS_PORT=443 +WILDFLY_USER=dev +WILDFLY_USER_HOME=/opt/wildfly +WILDFLY_VERSION=37.0.1.Final + +JDK_HOME=/etc/alternatives/jre_21_openjdk +JDK_MAX_HEAP=2048m +JDK_MIN_HEAP=1024m \ No newline at end of file diff --git a/config/docker-server.env b/config/docker-server.env index 641581a..176ceef 100644 --- a/config/docker-server.env +++ b/config/docker-server.env @@ -1,7 +1,7 @@ ORACLE_DRIVER_URL=https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc17/23.9.0.25.07/ojdbc17-23.9.0.25.07.jar MARIADB_DRIVER_URL=https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/3.3.3/mariadb-java-client-3.3.3.jar -WILDFLY_APP_HOME=/opt/jboss/wildfly -WILDFLY_RUN_USER=jboss +WILDFLY_APP_HOME=/opt/wildfly/current +WILDFLY_RUN_USER=dev WILDFLY_PASS=admin WILDFLY_USER=admin PROXY=defined diff --git a/scripts/container-entrypoint.sh b/scripts/container-entrypoint.sh index bdd573f..2c247c5 100755 --- a/scripts/container-entrypoint.sh +++ b/scripts/container-entrypoint.sh @@ -33,7 +33,7 @@ echo "----------------------------" echo "| Step 2: Starting Wildfly |" echo "----------------------------" -/opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0 & +/opt/wildfly/current/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0 & until curl http://localhost:8080 -sf -o /dev/null; do diff --git a/scripts/devcontainer-setup.sh b/scripts/devcontainer-setup.sh new file mode 100755 index 0000000..e923361 --- /dev/null +++ b/scripts/devcontainer-setup.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +FUNCTIONS=(download + unzip_and_chmod + create_symbolic_links + adjust_jvm_options) + +VARIABLES=(WILDFLY_BIND_ADDRESS + WILDFLY_HTTPS_PORT + WILDFLY_USER + WILDFLY_USER_HOME + WILDFLY_VERSION + JDK_HOME + JDK_MAX_HEAP + JDK_MIN_HEAP) + +if [[ $# -eq 0 ]] ; then + echo "Usage: $0 [var file] " + echo "The var file arg should be the path to a file with bash variables that will be sourced." + echo "The optional function name arg if provided is the sole function to call, else all functions are invoked sequentially." + printf 'Variables: ' + printf '%s ' "${VARIABLES[@]}" + printf '\n' + printf 'Functions: ' + printf '%s ' "${FUNCTIONS[@]}" + printf '\n' + exit 0 +fi + +if [ ! -z "$1" ] && [ -f "$1" ] +then +echo "Loading environment $1" +. $1 +fi + +# Verify expected env set: +for i in "${!VARIABLES[@]}"; do + var=${VARIABLES[$i]} + [ -z "${!var}" ] && { echo "$var is not set. Exiting."; exit 1; } +done + +WILDFLY_APP_HOME=${WILDFLY_USER_HOME}/${WILDFLY_VERSION} + +download() { +cd /tmp +curl -L -O https://github.com/wildfly/wildfly/releases/download/${WILDFLY_VERSION}/wildfly-${WILDFLY_VERSION}.zip +} + +unzip_and_chmod() { +unzip /tmp/wildfly-${WILDFLY_VERSION}.zip -d ${WILDFLY_USER_HOME} +mv ${WILDFLY_USER_HOME}/wildfly-${WILDFLY_VERSION} ${WILDFLY_APP_HOME} +chown -R ${WILDFLY_USER}:${WILDFLY_GROUP} ${WILDFLY_USER_HOME} +} + +create_symbolic_links() { +cd ${WILDFLY_USER_HOME} +ln -s ${WILDFLY_VERSION} current +ln -s current/standalone/configuration configuration +ln -s current/standalone/log log +} + +adjust_jvm_options() { +sed -i "s|#JAVA_HOME=\"/opt/java/jdk\"|JAVA_HOME=\"${JDK_HOME}\"|g" ${WILDFLY_APP_HOME}/bin/standalone.conf +sed -i "s/Xms64m/Xms${JDK_MIN_HEAP}/g" ${WILDFLY_APP_HOME}/bin/standalone.conf +sed -i "s/Xmx512m/Xmx${JDK_MAX_HEAP}/g" ${WILDFLY_APP_HOME}/bin/standalone.conf +} + +if [ ! -z "$2" ] +then + echo "------------------------" + echo "$2" + echo "------------------------" + $2 +else +for i in "${!FUNCTIONS[@]}"; do + echo "------------------------" + echo "${FUNCTIONS[$i]}" + echo "------------------------" + ${FUNCTIONS[$i]}; +done +fi diff --git a/scripts/provided-setup.sh b/scripts/provided-setup.sh index 8bc1e5b..5dc7d46 100755 --- a/scripts/provided-setup.sh +++ b/scripts/provided-setup.sh @@ -45,7 +45,7 @@ IFS="," read -a resources <<<"${RESOURCES_CSV}" for x in "${resources[@]}" ;do #echo "> [$x]" - wget -nv ${x} + curl -L -O ${x} LOCAL_RESOURCES+=(/tmp/`basename "${x}"`) done diff --git a/scripts/server-setup.sh b/scripts/server-setup.sh index 114c7dd..26286fa 100755 --- a/scripts/server-setup.sh +++ b/scripts/server-setup.sh @@ -89,7 +89,7 @@ if [[ -z "${ORACLE_DRIVER_PATH}" ]]; then return 0 fi -wget -O "${ORACLE_DRIVER_PATH}" "${ORACLE_DRIVER_URL}" +curl -L -o "${ORACLE_DRIVER_PATH}" "${ORACLE_DRIVER_URL}" ${WILDFLY_CLI_PATH} -c <