added env variable to specify which tomcat context GeoServer should be deployed at, including ROOT.
added logic to ignore ROOT_WEBAPP_REDIRECT if context is ROOT added logic to choose the correct url for the healthcheckpull/47/head
parent
0966018436
commit
e04f1ed17d
15
Dockerfile
15
Dockerfile
|
|
@ -16,6 +16,7 @@ ENV CORS_ALLOWED_METHODS=$CORS_ALLOWED_METHODS
|
||||||
ENV CORS_ALLOWED_HEADERS=$CORS_ALLOWED_HEADERS
|
ENV CORS_ALLOWED_HEADERS=$CORS_ALLOWED_HEADERS
|
||||||
ENV CORS_ALLOW_CREDENTIALS=$CORS_ALLOW_CREDENTIALS
|
ENV CORS_ALLOW_CREDENTIALS=$CORS_ALLOW_CREDENTIALS
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
ENV WEBAPP_CONTEXT=geoserver
|
||||||
|
|
||||||
# see https://docs.geoserver.org/stable/en/user/production/container.html
|
# see https://docs.geoserver.org/stable/en/user/production/container.html
|
||||||
ENV CATALINA_OPTS="\$EXTRA_JAVA_OPTS \
|
ENV CATALINA_OPTS="\$EXTRA_JAVA_OPTS \
|
||||||
|
|
@ -81,7 +82,7 @@ ENV GEOSERVER_VERSION=$GS_VERSION
|
||||||
ENV GEOSERVER_BUILD=$GS_BUILD
|
ENV GEOSERVER_BUILD=$GS_BUILD
|
||||||
ENV GEOSERVER_DATA_DIR=/opt/geoserver_data/
|
ENV GEOSERVER_DATA_DIR=/opt/geoserver_data/
|
||||||
ENV GEOSERVER_REQUIRE_FILE=$GEOSERVER_DATA_DIR/global.xml
|
ENV GEOSERVER_REQUIRE_FILE=$GEOSERVER_DATA_DIR/global.xml
|
||||||
ENV GEOSERVER_LIB_DIR=$CATALINA_HOME/webapps/geoserver/WEB-INF/lib/
|
ENV GEOSERVER_LIB_DIR=$CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/
|
||||||
ENV INSTALL_EXTENSIONS=false
|
ENV INSTALL_EXTENSIONS=false
|
||||||
ENV WAR_ZIP_URL=$WAR_ZIP_URL
|
ENV WAR_ZIP_URL=$WAR_ZIP_URL
|
||||||
ENV STABLE_EXTENSIONS=''
|
ENV STABLE_EXTENSIONS=''
|
||||||
|
|
@ -95,20 +96,20 @@ ENV ROOT_WEBAPP_REDIRECT=false
|
||||||
ENV POSTGRES_JNDI_ENABLED=false
|
ENV POSTGRES_JNDI_ENABLED=false
|
||||||
ENV CONFIG_DIR=/opt/config
|
ENV CONFIG_DIR=/opt/config
|
||||||
ENV CONFIG_OVERRIDES_DIR=/opt/config_overrides
|
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 HEALTHCHECK_URL=http://localhost:8080/$WEBAPP_CONTEXT/web/wicket/resource/org.geoserver.web.GeoServerBasePage/img/logo.png
|
||||||
|
ENV ROOT_HEALTHCHECK_URL=http://localhost:8080/web/wicket/resource/org.geoserver.web.GeoServerBasePage/img/logo.png
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
|
|
||||||
RUN echo "Installing GeoServer $GS_VERSION $GS_BUILD"
|
RUN echo "Installing GeoServer $GS_VERSION $GS_BUILD"
|
||||||
|
|
||||||
COPY --from=download /tmp/geoserver $CATALINA_HOME/webapps/geoserver
|
COPY --from=download /tmp/geoserver $CATALINA_HOME/webapps/$WEBAPP_CONTEXT
|
||||||
|
|
||||||
RUN mv $CATALINA_HOME/webapps/geoserver/WEB-INF/lib/marlin-*.jar $CATALINA_HOME/lib/marlin.jar \
|
RUN mv $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/marlin-*.jar $CATALINA_HOME/lib/marlin.jar \
|
||||||
&& mkdir -p $GEOSERVER_DATA_DIR
|
&& mkdir -p $GEOSERVER_DATA_DIR
|
||||||
|
|
||||||
RUN mv $CATALINA_HOME/webapps/geoserver/WEB-INF/lib/postgresql-*.jar $CATALINA_HOME/lib/
|
RUN mv $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/postgresql-*.jar $CATALINA_HOME/lib/
|
||||||
|
|
||||||
COPY $GS_DATA_PATH $GEOSERVER_DATA_DIR
|
COPY $GS_DATA_PATH $GEOSERVER_DATA_DIR
|
||||||
COPY $ADDITIONAL_LIBS_PATH $GEOSERVER_LIB_DIR
|
COPY $ADDITIONAL_LIBS_PATH $GEOSERVER_LIB_DIR
|
||||||
|
|
@ -129,4 +130,4 @@ ENTRYPOINT ["/opt/startup.sh"]
|
||||||
WORKDIR /opt
|
WORKDIR /opt
|
||||||
|
|
||||||
HEALTHCHECK --interval=1m --timeout=20s --retries=3 \
|
HEALTHCHECK --interval=1m --timeout=20s --retries=3 \
|
||||||
CMD curl --fail $HEALTHCHECK_URL || exit 1
|
CMD if [ $WEBAPP_CONTEXT == "ROOT" ];then (curl --fail ROOT_HEALTHCHECK_URL || exit 1); else (curl --fail HEALTHCHECK_URL || exit 1);fi
|
||||||
|
|
|
||||||
15
startup.sh
15
startup.sh
|
|
@ -7,25 +7,24 @@ if [ "${SKIP_DEMO_DATA}" = "true" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Add a permanent redirect (HTTP 301) from the root webapp ("/") to geoserver web interface ("/geoserver/web")
|
## Add a permanent redirect (HTTP 301) from the root webapp ("/") to geoserver web interface ("/geoserver/web")
|
||||||
if [ "${ROOT_WEBAPP_REDIRECT}" = "true" ]; then
|
if [ "${ROOT_WEBAPP_REDIRECT}" = "true" ] && [ "${WEBAPP_CONTEXT}" != "ROOT" ]; then
|
||||||
if [ ! -d $CATALINA_HOME/webapps/ROOT ]; then
|
if [ ! -d $CATALINA_HOME/webapps/ROOT ]; then
|
||||||
mkdir $CATALINA_HOME/webapps/ROOT
|
mkdir $CATALINA_HOME/webapps/ROOT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat > $CATALINA_HOME/webapps/ROOT/index.jsp << EOF
|
cat > $CATALINA_HOME/webapps/ROOT/index.jsp << EOF
|
||||||
<%
|
<%
|
||||||
final String redirectURL = "/geoserver/web/";
|
final String redirectURL = "/${WEBAPP_CONTEXT}/web/";
|
||||||
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
|
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
|
||||||
response.setHeader("Location", redirectURL);
|
response.setHeader("Location", redirectURL);
|
||||||
%>
|
%>
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
## install release data directory if needed before starting tomcat
|
## install release data directory if needed before starting tomcat
|
||||||
if [ ! -z "$GEOSERVER_REQUIRE_FILE" ] && [ ! -f "$GEOSERVER_REQUIRE_FILE" ]; then
|
if [ ! -z "$GEOSERVER_REQUIRE_FILE" ] && [ ! -f "$GEOSERVER_REQUIRE_FILE" ]; then
|
||||||
echo "Initialize $GEOSERVER_DATA_DIR from data directory included in geoserver.war"
|
echo "Initialize $GEOSERVER_DATA_DIR from data directory included in geoserver.war"
|
||||||
cp -r $CATALINA_HOME/webapps/geoserver/data/* $GEOSERVER_DATA_DIR
|
cp -r $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/data/* $GEOSERVER_DATA_DIR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## install GeoServer extensions before starting the tomcat
|
## install GeoServer extensions before starting the tomcat
|
||||||
|
|
@ -35,7 +34,7 @@ fi
|
||||||
# we also count whether at least one file with the extensions exists
|
# we also count whether at least one file with the extensions exists
|
||||||
count=`ls -1 $ADDITIONAL_LIBS_DIR/*.jar 2>/dev/null | wc -l`
|
count=`ls -1 $ADDITIONAL_LIBS_DIR/*.jar 2>/dev/null | wc -l`
|
||||||
if [ -d "$ADDITIONAL_LIBS_DIR" ] && [ $count != 0 ]; then
|
if [ -d "$ADDITIONAL_LIBS_DIR" ] && [ $count != 0 ]; then
|
||||||
cp $ADDITIONAL_LIBS_DIR/*.jar $CATALINA_HOME/webapps/geoserver/WEB-INF/lib/
|
cp $ADDITIONAL_LIBS_DIR/*.jar $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/lib/
|
||||||
echo "Installed $count JAR extension file(s) from the additional libs folder"
|
echo "Installed $count JAR extension file(s) from the additional libs folder"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -52,8 +51,8 @@ fi
|
||||||
# to the end of the web.xml
|
# to the end of the web.xml
|
||||||
# (this will only happen if our filter has not yet been added before)
|
# (this will only happen if our filter has not yet been added before)
|
||||||
if [ "${CORS_ENABLED}" = "true" ]; then
|
if [ "${CORS_ENABLED}" = "true" ]; then
|
||||||
if ! grep -q DockerGeoServerCorsFilter "$CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml"; then
|
if ! grep -q DockerGeoServerCorsFilter "$CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/web.xml"; then
|
||||||
echo "Enable CORS for $CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml"
|
echo "Enable CORS for $CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/web.xml"
|
||||||
|
|
||||||
# Add support for access-control-allow-credentials when the origin is not a wildcard when specified via env var
|
# 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
|
if [ "${CORS_ALLOWED_ORIGINS}" != "*" ] && [ "${CORS_ALLOW_CREDENTIALS}" = "true" ]; then
|
||||||
|
|
@ -86,7 +85,7 @@ if [ "${CORS_ENABLED}" = "true" ]; then
|
||||||
<filter-mapping>\n\
|
<filter-mapping>\n\
|
||||||
<filter-name>DockerGeoServerCorsFilter</filter-name>\n\
|
<filter-name>DockerGeoServerCorsFilter</filter-name>\n\
|
||||||
<url-pattern>/*</url-pattern>\n\
|
<url-pattern>/*</url-pattern>\n\
|
||||||
</filter-mapping>" "$CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml";
|
</filter-mapping>" "$CATALINA_HOME/webapps/$WEBAPP_CONTEXT/WEB-INF/web.xml";
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue