FROM tomcat:9-jdk11-openjdk as mother LABEL maintainer="Alessandro Parma" RUN apt-get update && apt-get install -y unzip # accepts local files and URLs. Tar(s) are automatically extracted WORKDIR /output/datadir ARG GEOSERVER_DATA_DIR_SRC="./.placeholder" ADD "${GEOSERVER_DATA_DIR_SRC}" "./" # accepts local files and URLs. Tar(s) are automatically extracted WORKDIR /output/webapp ARG GEOSERVER_WEBAPP_SRC="./.placeholder" ADD "${GEOSERVER_WEBAPP_SRC}" "./" # zip files require explicit extracion RUN \ if [ "${GEOSERVER_WEBAPP_SRC##*.}" = "zip" ]; then \ unzip "./*zip"; \ rm ./*zip; \ fi \ && [ -d "./geoserver" ] || (mkdir -p ./geoserver && unzip ./geoserver.war -d ./geoserver && rm ./geoserver.war) RUN apt-get update; apt-get upgrade --yes; apt-get install wget --yes WORKDIR /output/plugins ARG PLUG_IN_URLS="" ADD .placeholder ${PLUG_IN_URLS} /output/plugins/ # RUN \ # if [ "$(echo ${PLUG_IN_URLS}| grep http)" != "" ]; then \ # for URL in "${PLUG_IN_URLS}"; do wget $URL;done; unzip -o "./*zip"; rm -f ./*zip; \ # fi RUN unzip -o "./*.zip";rm -f ./*zip WORKDIR /output/webapp ARG APP_LOCATION="geoserver" RUN \ if [ "${APP_LOCATION}" != "geoserver" ]; then \ mv /output/webapp/geoserver /output/webapp/${APP_LOCATION}; \ fi FROM tomcat:9-jdk11-openjdk ENV CATALINA_BASE "$CATALINA_HOME" # set externalizations ENV GEOSERVER_HOME="/var/geoserver" ENV GEOSERVER_LOG_DIR="${GEOSERVER_HOME}/logs" ENV GEOSERVER_DATA_DIR="${GEOSERVER_HOME}/datadir" ENV GEOSERVER_LOG_LOCATION="${GEOSERVER_LOG_DIR}/geoserver.log" ENV GEOWEBCACHE_CONFIG_DIR="${GEOSERVER_DATA_DIR}/gwc" ENV GEOWEBCACHE_CACHE_DIR="${GEOSERVER_HOME}/gwc_cache_dir" ENV NETCDF_DATA_DIR="${GEOSERVER_HOME}/netcdf_data_dir" ENV GRIB_CACHE_DIR="${GEOSERVER_HOME}/grib_cache_dir" # override at run time as needed JAVA_OPTS ENV INITIAL_MEMORY="2G" ENV MAXIMUM_MEMORY="4G" ENV JAIEXT_ENABLED="true" ENV GEOSERVER_OPTS=" \ -Dorg.geotools.coverage.jaiext.enabled=${JAIEXT_ENABLED} \ -Duser.timezone=GMT \ -Dorg.geotools.shapefile.datetime=true \ -DGEOSERVER_LOG_LOCATION=${GEOSERVER_LOG_LOCATION} \ -DGEOWEBCACHE_CONFIG_DIR=${GEOWEBCACHE_CONFIG_DIR} \ -DGEOWEBCACHE_CACHE_DIR=${GEOWEBCACHE_CACHE_DIR} \ -DNETCDF_DATA_DIR=${NETCDF_DATA_DIR} \ -DGRIB_CACHE_DIR=${GRIB_CACHE_DIR}" ENV JAVA_OPTS="-Xms${INITIAL_MEMORY} -Xmx${MAXIMUM_MEMORY} \ -Djava.awt.headless=true -server \ -Dfile.encoding=UTF8 \ -Djavax.servlet.request.encoding=UTF-8 \ -Djavax.servlet.response.encoding=UTF-8 \ -XX:SoftRefLRUPolicyMSPerMB=36000 -XX:+UseG1GC \ -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 \ ${GEOSERVER_OPTS}" ADD run_tests.sh /docker/tests/run_tests.sh # create externalized dirs RUN apt-get update \ && apt-get install --yes gdal-bin postgresql-client-11 fontconfig libfreetype6 \ && apt-get clean \ && apt-get autoclean \ && apt-get autoremove \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /usr/share/man/* \ && rm -rf /usr/share/doc/* \ && mkdir -p \ "${GEOSERVER_DATA_DIR}" \ "${GEOSERVER_LOG_DIR}" \ "${GEOWEBCACHE_CONFIG_DIR}" \ "${GEOWEBCACHE_CACHE_DIR}" \ "${NETCDF_DATA_DIR}" \ "${GRIB_CACHE_DIR}" # copy from mother COPY --from=mother "/output/datadir" "${GEOSERVER_DATA_DIR}" COPY --from=mother "/output/webapp/geoserver" "${CATALINA_BASE}/webapps/geoserver" COPY --from=mother "/output/plugins" "${CATALINA_BASE}/webapps/geoserver/WEB-INF/lib" WORKDIR "$CATALINA_BASE" ENV TERM xterm EXPOSE 8080/tcp