From afd8bbcceb995765d1de6ae2f3a7b2296319bcbd Mon Sep 17 00:00:00 2001 From: Florian Greinacher Date: Wed, 25 Jan 2023 16:35:10 +0100 Subject: [PATCH] feat: support deep base URLs --- Dockerfile.jetty | 8 ++++---- Dockerfile.tomcat | 7 +++---- ROOT.jetty.xml | 9 +++++++++ ...entrypoint.sh => docker-entrypoint.jetty.sh | 7 ++----- docker-entrypoint.tomcat.sh | 18 ++++++++++++++++++ 5 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 ROOT.jetty.xml rename docker-entrypoint.sh => docker-entrypoint.jetty.sh (57%) create mode 100755 docker-entrypoint.tomcat.sh diff --git a/Dockerfile.jetty b/Dockerfile.jetty index 2b64dbe..380eaa5 100644 --- a/Dockerfile.jetty +++ b/Dockerfile.jetty @@ -24,16 +24,16 @@ RUN apt-get update && \ rm -rf /var/lib/apt/lists/* && \ /generate-jetty-start.sh -COPY docker-entrypoint.sh /entrypoint.sh +COPY docker-entrypoint.jetty.sh /entrypoint.sh RUN chmod +x /entrypoint.sh USER jetty -ENV BASE_URL=ROOT \ - WEBAPP_PATH=$JETTY_BASE/webapps +ENV WEBAPP_PATH=$JETTY_BASE/webapps RUN rm -rf $WEBAPP_PATH && \ mkdir -p $WEBAPP_PATH -COPY --from=builder /app/target/plantuml.war $WEBAPP_PATH/ROOT.war +COPY --from=builder /app/target/plantuml.war /plantuml.war +COPY ROOT.jetty.xml $WEBAPP_PATH/ROOT.xml ENTRYPOINT ["/entrypoint.sh"] # Openshift https://docs.openshift.com/container-platform/4.9/openshift_images/create-images.html#images-create-guide-openshift_create-images diff --git a/Dockerfile.tomcat b/Dockerfile.tomcat index dccff7f..6dfdb23 100644 --- a/Dockerfile.tomcat +++ b/Dockerfile.tomcat @@ -17,14 +17,13 @@ RUN apt-get update && \ && \ rm -rf /var/lib/apt/lists/* -COPY docker-entrypoint.sh /entrypoint.sh +COPY docker-entrypoint.tomcat.sh /entrypoint.sh RUN chmod +x /entrypoint.sh -ENV BASE_URL=ROOT \ - WEBAPP_PATH=$CATALINA_HOME/webapps +ENV WEBAPP_PATH=$CATALINA_HOME/webapps RUN rm -rf $WEBAPP_PATH && \ mkdir -p $WEBAPP_PATH -COPY --from=builder /app/target/plantuml.war $WEBAPP_PATH/ROOT.war +COPY --from=builder /app/target/plantuml.war /plantuml.war ENTRYPOINT ["/entrypoint.sh"] CMD ["catalina.sh", "run"] diff --git a/ROOT.jetty.xml b/ROOT.jetty.xml new file mode 100644 index 0000000..c3b6f38 --- /dev/null +++ b/ROOT.jetty.xml @@ -0,0 +1,9 @@ + + + + + + + + /plantuml.war + diff --git a/docker-entrypoint.sh b/docker-entrypoint.jetty.sh similarity index 57% rename from docker-entrypoint.sh rename to docker-entrypoint.jetty.sh index 6a4e5c0..69e6b94 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.jetty.sh @@ -3,11 +3,8 @@ # cspell:enableCompoundWords ########################################################### -# use environment variables -if [ "$BASE_URL" != "ROOT" ]; then - mkdir -p "$(dirname "$WEBAPP_PATH/$BASE_URL")" - mv "$WEBAPP_PATH/ROOT.war" "$WEBAPP_PATH/$BASE_URL.war" -fi +# ensure context path starts with a slash +export CONTEXT_PATH="/${BASE_URL#'/'}" # base image entrypoint if [ -x /docker-entrypoint.sh ]; then diff --git a/docker-entrypoint.tomcat.sh b/docker-entrypoint.tomcat.sh new file mode 100755 index 0000000..b49991e --- /dev/null +++ b/docker-entrypoint.tomcat.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# cspell:words mkdir +# cspell:enableCompoundWords +########################################################### + +# choose war file name so that context path is correctly set based on BASE_URL, +# following the rules from https://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Naming, +# specifically remove leading and trailing slashes and replace the remaining ones by hashes. +export FILE_NAME="$(echo "$BASE_URL" | sed -e 's:^/::' -e 's:/$::' -e 's:/:#:g')" +export FILE_PATH="$WEBAPP_PATH/$FILE_NAME.war" +mv /plantuml.war "$FILE_PATH" + +# base image entrypoint +if [ -x /docker-entrypoint.sh ]; then + /docker-entrypoint.sh "$@" +else + exec "$@" +fi