From b2672b6f34ebc7291ccc178c3884c6f0b95161f5 Mon Sep 17 00:00:00 2001
From: bclayton-usgs <bclayton@usgs.gov>
Date: Mon, 23 Mar 2020 14:11:05 -0600
Subject: [PATCH] Update deploy to use Micronaut

---
 Dockerfile            | 34 +++++++++++-----------------------
 docker-entrypoint.sh  | 40 +++++++++-------------------------------
 scripts/nshmp-haz.yml |  2 +-
 3 files changed, 21 insertions(+), 55 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index a528c9d6e..e28098d74 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -22,6 +22,8 @@
 ARG project=nshmp-haz-v2
 ARG builder_workdir=/app/${project}
 ARG libs_dir=${builder_workdir}/build/libs
+ARG jar_file=${libs_dir}/${project}.jar
+ARG ws_file=${libs_dir}/${project}-ws.jar
 
 ####
 # Builder image: Build jar and war file.
@@ -31,6 +33,8 @@ FROM usgs/centos:8 as builder
 ENV LANG="en_US.UTF-8"
 
 ARG builder_workdir
+ARG libs_dir
+ARG jar_file
 
 WORKDIR ${builder_workdir}
 
@@ -39,7 +43,8 @@ COPY . .
 RUN yum install -y java-11-openjdk-devel which git
 
 RUN mv nshmp-lib ../. \
-    && ./gradlew --no-daemon assemble
+    && ./gradlew --no-daemon assemble \
+    && mv ${libs_dir}/*-all.jar ${ws_file}
 
 ####
 # Application image: Run jar or war file.
@@ -51,13 +56,13 @@ LABEL maintainer="Peter Powers <pmpowers@usgs.gov>, Brandon Clayton <bclayton@us
 ENV LANG="en_US.UTF-8"
 
 ARG libs_dir
+ARG ws_file
 ARG builder_workdir
 ARG project
-ARG TOMCAT_MAJOR=8
-ARG TOMCAT_VERSION=${TOMCAT_MAJOR}.5.40
 
 ENV PROJECT ${project}
-ENV JAVA_XMX 8g
+ENV CONTEXT_PATH "/"
+ENV MODEL_PATH /app/models
 
 # Whether to run hazard jar file or web services war file
 ENV RUN_HAZARD true
@@ -72,30 +77,13 @@ ENV IML ""
 ENV CONFIG_FILE "config.json"
 VOLUME [ "/app/output" ]
 
-# Tomcat
-ENV CONTEXT_PATH ""
-ENV CATALINA_HOME /usr/local/tomcat
-ENV TOMCAT_WEBAPPS ${CATALINA_HOME}/webapps
-ENV PATH ${CATALINA_HOME}/bin:${PATH}
-ENV TOMCAT_SOURCE http://archive.apache.org/dist/tomcat
-ENV TOMCAT_URL ${TOMCAT_SOURCE}/tomcat-${TOMCAT_MAJOR}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz
-ENV JAVA_OPTS -Xmx${JAVA_XMX}
-
-ENV WS_HOME ${CATALINA_HOME}
-ENV HAZ_HOME /app
-
-WORKDIR ${HAZ_HOME}
+WORKDIR /app
 
 COPY --from=builder ${libs_dir}/* ./
 COPY docker-entrypoint.sh .
 
-WORKDIR ${WS_HOME}
-
 RUN yum update -y \
-    && yum install -y file jq zip java-11-openjdk-headless \
-    && curl -L ${TOMCAT_URL} | tar -xz --strip-components=1
-
-WORKDIR ${HAZ_HOME}
+    && yum install -y file jq zip java-11-openjdk-headless
 
 EXPOSE 8080
 ENTRYPOINT [ "bash", "docker-entrypoint.sh" ]
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
index b114c559c..45ee388fb 100644
--- a/docker-entrypoint.sh
+++ b/docker-entrypoint.sh
@@ -107,7 +107,7 @@ run_hazard() {
 
   # Run nshmp-haz
   java -Xms${JAVA_XMS} -Xmx${JAVA_XMX} \
-      -cp ${HAZ_HOME}/${PROJECT}.jar \
+      -cp /app/${PROJECT}.jar \
       gov.usgs.earthquake.nshmp.${nshmp_program} \
       "${nshmp_model_path}" \
       "${site_file}" \
@@ -130,9 +130,15 @@ run_hazard() {
 #   None
 ####
 run_ws() {
-  unpack_war;
   get_ws_models;
-  catalina.sh run 2>&1;
+
+  if [ -z ${CONTEXT_PATH} ]; then
+    CONTEXT_PATH="/nshmp/${MODEL}";
+  fi
+
+  java -jar ${PROJECT}-ws.jar \
+      "-Dmicronaut.server.context-path=${CONTEXT_PATH}" \
+      -model=/app/models
 }
 
 ####
@@ -510,34 +516,6 @@ move_to_output_volume() {
   cp -r ${hazout}/* output/. 2> ${LOG_FILE};
 }
 
-####
-# Unpack war file into webapps/<CONTEXT_PATH>.
-# Globals:
-#   (string) CONTEXT_PATH - The context path for the web services
-#   (string) LOG_FILE - The log file
-#   (string) MODEL - The model to use
-#   (string) PROJECT - The project name
-#   (string) TOMCAT_WEBAPPS - The Tomcat webapps dir
-# Arguments:
-#   None
-# Returns:
-#   None
-####
-unpack_war() {
-  cd ${TOMCAT_WEBAPPS} 2> ${LOG_FILE};
-
-  if [ -z ${CONTEXT_PATH} ]; then
-    CONTEXT_PATH="nshmp/${MODEL}";
-  fi
-
-  CONTEXT_PATH=$(echo ${CONTEXT_PATH//\//#} | awk {'print tolower($0)'}) 2> ${LOG_FILE};
-  mkdir ${CONTEXT_PATH} 2> ${LOG_FILE};
-  cd ${CONTEXT_PATH} 2> ${LOG_FILE};
-  cp ${HAZ_HOME}/${PROJECT}.war . 2> ${LOG_FILE};
-  unzip ${PROJECT}.war 2> ${LOG_FILE} &> /dev/null;
-  rm ${PROJECT}.war 2> ${LOG_FILE};
-}
-
 ####
 # Run main
 ####
diff --git a/scripts/nshmp-haz.yml b/scripts/nshmp-haz.yml
index 24a997ef5..e2282207a 100644
--- a/scripts/nshmp-haz.yml
+++ b/scripts/nshmp-haz.yml
@@ -23,7 +23,7 @@ services:
     environment:
       RUN_HAZARD: 'false'
       MODEL: CONUS-2018
-      CONTEXT_PATH: nshmp/conus-2018
+      CONTEXT_PATH: /nshmp/conus-2018
 
   # # Deploy nshmp-haz with CONUS-2014
   # nshmp-haz-conus-2014:
-- 
GitLab