From 31aa91735c9683d620a9ee8ce7432115f9e0bb13 Mon Sep 17 00:00:00 2001 From: Chris Barnett Date: Tue, 13 Feb 2024 13:50:05 -0500 Subject: [PATCH] Added context element to config/server.xml and set autoDeploy and deployOnStartup to false url in HEALTHCHECK written to file so that it can be set on startup updated README with usage info --- Dockerfile | 16 ++++++++++------ startup.sh | 14 +++++++------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index df37c88..06311db 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,6 @@ ENV CORS_ALLOWED_METHODS=$CORS_ALLOWED_METHODS ENV CORS_ALLOWED_HEADERS=$CORS_ALLOWED_HEADERS ENV CORS_ALLOW_CREDENTIALS=$CORS_ALLOW_CREDENTIALS ENV DEBIAN_FRONTEND=noninteractive -ENV WEBAPP_CONTEXT=geoserver # see https://docs.geoserver.org/stable/en/user/production/container.html ENV CATALINA_OPTS="\$EXTRA_JAVA_OPTS \ @@ -86,7 +85,7 @@ ENV GEOSERVER_VERSION=$GS_VERSION ENV GEOSERVER_BUILD=$GS_BUILD ENV GEOSERVER_DATA_DIR=/opt/geoserver_data/ ENV GEOSERVER_REQUIRE_FILE=$GEOSERVER_DATA_DIR/global.xml -ENV GEOSERVER_LIB_DIR=$CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/ +ENV GEOSERVER_LIB_DIR=$CATALINA_HOME/webapps/geoserver/WEB-INF/lib/ ENV INSTALL_EXTENSIONS=false ENV WAR_ZIP_URL=$WAR_ZIP_URL ENV STABLE_EXTENSIONS='' @@ -100,7 +99,12 @@ ENV ROOT_WEBAPP_REDIRECT=false ENV POSTGRES_JNDI_ENABLED=false ENV CONFIG_DIR=/opt/config ENV CONFIG_OVERRIDES_DIR=/opt/config_overrides -ENV HEALTHCHECK_URL=http://localhost:8080/geoserver/web/wicket/resource/org.geoserver.web.GeoServerBasePage/img/logo.png +ENV WEBAPP_CONTEXT=geoserver +ENV HEALTHCHECK_URL='' +ENV HTTPS_ENABLED=false +ENV HTTPS_KEYSTORE_FILE=/opt/keystore.jks +ENV HTTPS_KEYSTORE_PASSWORD=changeit +ENV HTTPS_KEY_ALIAS=server ENV HTTPS_ENABLED=false ENV HTTPS_KEYSTORE_FILE=/opt/keystore.jks @@ -116,12 +120,12 @@ RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen RUN echo "Installing GeoServer $GS_VERSION $GS_BUILD" -COPY --from=download /tmp/geoserver $CATALINA_HOME/webapps/$WEBAPP_CONTEXT +COPY --from=download /tmp/geoserver $CATALINA_HOME/webapps/geoserver -RUN mv $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/marlin-*.jar $CATALINA_HOME/lib/marlin.jar \ +RUN mv $CATALINA_HOME/webapps/geoserver/WEB-INF/lib/marlin-*.jar $CATALINA_HOME/lib/marlin.jar \ && mkdir -p $GEOSERVER_DATA_DIR -RUN mv $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/postgresql-*.jar $CATALINA_HOME/lib/ +RUN mv $CATALINA_HOME/webapps/geoserver/WEB-INF/lib/postgresql-*.jar $CATALINA_HOME/lib/ COPY $GS_DATA_PATH $GEOSERVER_DATA_DIR COPY $ADDITIONAL_LIBS_PATH $GEOSERVER_LIB_DIR diff --git a/startup.sh b/startup.sh index d75fed0..35f4ddc 100755 --- a/startup.sh +++ b/startup.sh @@ -43,15 +43,15 @@ fi # Set the HEALTHCHECK URL depending on the webapp context # remove duplicate forward slashes -DEFAULT_HEALTHCHECK_URL=$(echo "localhost:8080/${WEBAPP_CONTEXT}/ows?service=wms&version=1.3.0&request=GetCapabilities" | tr -s /) +DEFAULT_HEALTHCHECK_URL=$(echo "localhost:8080/${WEBAPP_CONTEXT}/web/wicket/resource/org.geoserver.web.GeoServerBasePage/img/logo.png" | tr -s /) DEFAULT_HEALTHCHECK_URL="http://${DEFAULT_HEALTHCHECK_URL}" -# write the healthcheck URL to a file that user geoserver has access to but is not served by tomcat +# write the healthcheck URL to a file that geoserver user has access to but is not served by tomcat echo "${HEALTHCHECK_URL:-$DEFAULT_HEALTHCHECK_URL}" > $CATALINA_HOME/conf/healthcheck_url.txt ## install release data directory if needed before starting tomcat if [ ! -z "$GEOSERVER_REQUIRE_FILE" ] && [ ! -f "$GEOSERVER_REQUIRE_FILE" ]; then echo "Initialize $GEOSERVER_DATA_DIR from data directory included in geoserver.war" - cp -r $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/data/* $GEOSERVER_DATA_DIR + cp -r $CATALINA_HOME/webapps/geoserver/data/* $GEOSERVER_DATA_DIR fi ## install GeoServer extensions before starting the tomcat @@ -61,7 +61,7 @@ fi # we also count whether at least one file with the extensions exists count=`ls -1 $ADDITIONAL_LIBS_DIR/*.jar 2>/dev/null | wc -l` if [ -d "$ADDITIONAL_LIBS_DIR" ] && [ $count != 0 ]; then - cp $ADDITIONAL_LIBS_DIR/*.jar $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/ + cp $ADDITIONAL_LIBS_DIR/*.jar $CATALINA_HOME/webapps/geoserver/WEB-INF/lib/ echo "Installed $count JAR extension file(s) from the additional libs folder" fi @@ -78,8 +78,8 @@ fi # to the end of the web.xml # (this will only happen if our filter has not yet been added before) if [ "${CORS_ENABLED}" = "true" ]; then - if ! grep -q DockerGeoServerCorsFilter "$CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/web.xml"; then - echo "Enable CORS for $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/web.xml" + if ! grep -q DockerGeoServerCorsFilter "$CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml"; then + echo "Enable CORS for $CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml" # Add support for access-control-allow-credentials when the origin is not a wildcard when specified via env var if [ "${CORS_ALLOWED_ORIGINS}" != "*" ] && [ "${CORS_ALLOW_CREDENTIALS}" = "true" ]; then @@ -112,7 +112,7 @@ if [ "${CORS_ENABLED}" = "true" ]; then \n\ DockerGeoServerCorsFilter\n\ /*\n\ - " "$CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/web.xml"; + " "$CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml"; fi fi