FROM tomcat:9.0.41-jdk11-openjdk-slim AS base ARG GEOSERVER_VERSION=2.18.2 ARG GEOSERVER_WAR_SRC=https://downloads.sourceforge.net/project/geoserver/GeoServer/${GEOSERVER_VERSION}/geoserver-${GEOSERVER_VERSION}-war.zip ARG STABLE_PLUGIN_URL=https://sourceforge.net/projects/geoserver/files/GeoServer/${GEOSERVER_VERSION}/extensions ARG CORS_ENABLED=false ARG CORS_ALLOWED_ORIGINS=* ARG CORS_ALLOWED_METHODS=GET,POST,PUT,DELETE,HEAD,OPTIONS ARG CORS_ALLOWED_HEADERS=* # environment variables ENV GEOSERVER_VERSION=${GEOSERVER_VERSION} \ GEOSERVER_DIR=${CATALINA_HOME}/webapps/geoserver \ STABLE_PLUGIN_URL=${STABLE_PLUGIN_URL} \ INITIAL_MEMORY=2G \ MAXIMUM_MEMORY=4G \ JAIEXT_ENABLED=true \ DOWNLOAD_EXTENSIONS=false \ STABLE_EXTENSIONS='' \ DEBIAN_FRONTEND=noninteractive \ ADDITIONAL_LIBS_DIR=/opt/additional_libs/ \ GEOSERVER_DATA_DIR=/opt/geoserver_data/ \ GEOWEBCACHE_CACHE_DIR=/opt/geowebcache_data/ RUN mkdir ${ADDITIONAL_LIBS_DIR} ${GEOSERVER_DATA_DIR} ${GEOWEBCACHE_CACHE_DIR} # install required dependencies # also clear the initial webapps RUN apt update && \ apt install -y curl wget openssl zip fontconfig libfreetype6 && \ rm -rf ${CATALINA_HOME}/webapps/* ADD "${GEOSERVER_WAR_SRC}" "/tmp/" # install geoserver RUN unzip /tmp/geoserver*.zip geoserver.war -d ${CATALINA_HOME}/webapps && \ mkdir -p ${GEOSERVER_DIR} && \unzip -q ${CATALINA_HOME}/webapps/geoserver.war -d ${GEOSERVER_DIR} && \ rm ${CATALINA_HOME}/webapps/geoserver.war # configure CORS (inspired by https://github.com/oscarfonts/docker-geoserver) RUN if [ "${CORS_ENABLED}" = "true" ]; then \ sed -i "\::i\ \ \n\ \ CorsFilter\n\ \ org.apache.catalina.filters.CorsFilter\n\ \ \n\ \ cors.allowed.origins\n\ \ ${CORS_ALLOWED_ORIGINS}\n\ \ \n\ \ \n\ \ cors.allowed.methods\n\ \ ${CORS_ALLOWED_METHODS}\n\ \ \n\ \ \n\ \ cors.allowed.headers\n\ \ ${CORS_ALLOWED_HEADERS}\n\ \ \n\ \ \n\ \ \n\ \ CorsFilter\n\ \ /*\n\ \ " "${GEOSERVER_DIR}/WEB-INF/web.xml"; \ fi # copy scripts COPY scripts /scripts RUN chmod +x /scripts/*.sh # cleanup RUN apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* WORKDIR ${CATALINA_HOME} CMD ["/bin/sh", "/scripts/entrypoint.sh"]