diff --git a/Dockerfile b/Dockerfile index 2bc975b..27de96d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,7 @@ ENV CATALINA_OPTS="\$EXTRA_JAVA_OPTS \ # init RUN apt update \ && apt -y upgrade \ -&& apt install -y --no-install-recommends openssl unzip gdal-bin wget curl openjdk-11-jdk \ +&& apt install -y --no-install-recommends openssl unzip gdal-bin wget curl openjdk-11-jdk gettext \ && apt clean \ && rm -rf /var/cache/apt/* \ && rm -rf /var/lib/apt/lists/* @@ -92,6 +92,9 @@ ENV ADDITIONAL_LIBS_DIR=/opt/additional_libs/ ENV ADDITIONAL_FONTS_DIR=/opt/additional_fonts/ ENV SKIP_DEMO_DATA=false ENV ROOT_WEBAPP_REDIRECT=false +ENV POSTGRES_JNDI_ENABLED=false +ENV CONFIG_DIR=/opt/config +ENV CONFIG_OVERRIDES_DIR=/opt/config_overrides EXPOSE 8080 @@ -104,6 +107,8 @@ COPY --from=download /tmp/geoserver $CATALINA_HOME/webapps/geoserver 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/geoserver/WEB-INF/lib/postgresql-*.jar $CATALINA_HOME/lib/ + COPY $GS_DATA_PATH $GEOSERVER_DATA_DIR COPY $ADDITIONAL_LIBS_PATH $GEOSERVER_LIB_DIR COPY $ADDITIONAL_FONTS_PATH /usr/share/fonts/truetype/ @@ -111,6 +116,9 @@ COPY $ADDITIONAL_FONTS_PATH /usr/share/fonts/truetype/ # cleanup RUN rm -rf /tmp/* +# Add default configs +ADD config $CONFIG_DIR + # copy scripts COPY *.sh /opt/ RUN chmod +x /opt/*.sh diff --git a/README.md b/README.md index 950f62a..436856b 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,22 @@ docker run -it -p 80:8080 \ **Note:** Do not change the target value! + +## How to enable a PostgreSQL JNDI resource? + +To enable a PostgreSQL JNDI resource, provide the following environment variables: + +* ``POSTGRES_JNDI_ENABLED`` to ``true`` +* ``POSTGRES_HOST`` +* ``POSTGRES_PORT`` (optional; defaults to 5432) +* ``POSTGRES_DB`` +* ``POSTGRES_USERNAME`` +* ``POSTGRES_PASSWORD`` +* ``POSTGRES_JNDI_RESOURCE_NAME`` (optional; defaults to ``java:comp/env/jdbc/postgres``) + +For advanced customization of the connection pool, you can provide your own customized "context.xml" +file to Apache Tomcat by mounting it to the container at ``/opt/config_overrides/context.xml``. + ## How to use the docker-compose demo? The ``docker-compose-demo.yml`` to build with your own data directory and extensions. diff --git a/config/context.xml b/config/context.xml new file mode 100644 index 0000000..4b1a5ff --- /dev/null +++ b/config/context.xml @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/startup.sh b/startup.sh index 7f008b7..8578ecd 100755 --- a/startup.sh +++ b/startup.sh @@ -90,5 +90,26 @@ if [ "${CORS_ENABLED}" = "true" ]; then fi fi +if [ "${POSTGRES_JNDI_ENABLED}" = "true" ]; then + + # Set up some default values + if [ -z "${POSTGRES_JNDI_RESOURCE_NAME}" ]; then + export POSTGRES_JNDI_RESOURCE_NAME="java:comp/env/jdbc/postgres" + fi + if [ -z "${POSTGRES_PORT}" ]; then + export POSTGRES_PORT="5432" + fi + + # Use a custom "context.xml" if the user mounted one into the container + if [ -d "${CONFIG_OVERRIDES_DIR}" ] && [ -f "${CONFIG_OVERRIDES_DIR}/context.xml" ]; then + echo "Installing configuration override for context.xml with substituted environment variables" + envsubst < "${CONFIG_OVERRIDES_DIR}"/context.xml > "${CATALINA_HOME}/conf/context.xml" + else + # Otherwise use the default + echo "Installing default context.xml with substituted environment variables" + envsubst < "${CONFIG_DIR}"/context.xml > "${CATALINA_HOME}/conf/context.xml" + fi +fi + # start the tomcat exec $CATALINA_HOME/bin/catalina.sh run