77 lines
2.7 KiB
Docker
77 lines
2.7 KiB
Docker
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 "\:</web-app>:i\ \
|
|
<filter>\n\ \
|
|
<filter-name>CorsFilter</filter-name>\n\ \
|
|
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>\n\ \
|
|
<init-param>\n\ \
|
|
<param-name>cors.allowed.origins</param-name>\n\ \
|
|
<param-value>${CORS_ALLOWED_ORIGINS}</param-value>\n\ \
|
|
</init-param>\n\ \
|
|
<init-param>\n\ \
|
|
<param-name>cors.allowed.methods</param-name>\n\ \
|
|
<param-value>${CORS_ALLOWED_METHODS}</param-value>\n\ \
|
|
</init-param>\n\ \
|
|
<init-param>\n\ \
|
|
<param-name>cors.allowed.headers</param-name>\n\ \
|
|
<param-value>${CORS_ALLOWED_HEADERS}</param-value>\n\ \
|
|
</init-param>\n\ \
|
|
</filter>\n\ \
|
|
<filter-mapping>\n\ \
|
|
<filter-name>CorsFilter</filter-name>\n\ \
|
|
<url-pattern>/*</url-pattern>\n\ \
|
|
</filter-mapping>" "${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"]
|