Add CORS support

pull/1/head
Nils Bühner 2020-12-17 22:33:39 +01:00
parent 4261b1bdc1
commit 6945df30cb
2 changed files with 39 additions and 6 deletions

View File

@ -5,12 +5,17 @@ ARG GS_VERSION=2.18.1
ARG WAR_URL=https://downloads.sourceforge.net/project/geoserver/GeoServer/${GS_VERSION}/geoserver-${GS_VERSION}-war.zip ARG WAR_URL=https://downloads.sourceforge.net/project/geoserver/GeoServer/${GS_VERSION}/geoserver-${GS_VERSION}-war.zip
ARG STABLE_PLUGIN_URL=https://sourceforge.net/projects/geoserver/files/GeoServer/${GS_VERSION}/extensions ARG STABLE_PLUGIN_URL=https://sourceforge.net/projects/geoserver/files/GeoServer/${GS_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 # environment variables
ENV GS_VERSION=${GS_VERSION} \ ENV GS_VERSION=${GS_VERSION} \
WAR_URL=${WAR_URL} \ GEOSERVER_DIR=${CATALINA_HOME}/webapps/geoserver \
STABLE_PLUGIN_URL=${STABLE_PLUGIN_URL} \ STABLE_PLUGIN_URL=${STABLE_PLUGIN_URL} \
INITIAL_MEMORY="2G" \ INITIAL_MEMORY=2G \
MAXIMUM_MEMORY="4G" \ MAXIMUM_MEMORY=4G \
JAIEXT_ENABLED=true \ JAIEXT_ENABLED=true \
DOWNLOAD_EXTENSIONS=false \ DOWNLOAD_EXTENSIONS=false \
STABLE_EXTENSIONS='' \ STABLE_EXTENSIONS='' \
@ -30,10 +35,35 @@ RUN apt update && \
# install geoserver # install geoserver
RUN wget --progress=bar:force:noscroll -c --no-check-certificate "${WAR_URL}" -O /tmp/geoserver.zip && \ RUN wget --progress=bar:force:noscroll -c --no-check-certificate "${WAR_URL}" -O /tmp/geoserver.zip && \
unzip /tmp/geoserver.zip geoserver.war -d ${CATALINA_HOME}/webapps && \ unzip /tmp/geoserver.zip geoserver.war -d ${CATALINA_HOME}/webapps && \
mkdir -p ${CATALINA_HOME}/webapps/geoserver && \ mkdir -p ${GEOSERVER_DIR} && \
unzip -q ${CATALINA_HOME}/webapps/geoserver.war -d ${CATALINA_HOME}/webapps/geoserver && \ unzip -q ${CATALINA_HOME}/webapps/geoserver.war -d ${GEOSERVER_DIR} && \
rm ${CATALINA_HOME}/webapps/geoserver.war 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
COPY scripts /scripts COPY scripts /scripts
RUN chmod +x /scripts/*.sh RUN chmod +x /scripts/*.sh

View File

@ -3,11 +3,14 @@ services:
geoserver: geoserver:
build: build:
context: . context: .
args:
- CORS_ENABLED=true
- CORS_ALLOWED_METHODS=GET,POST,PUT,HEAD,OPTIONS
ports: ports:
- 8080:8080 - 8080:8080
environment: environment:
- DOWNLOAD_EXTENSIONS=true - DOWNLOAD_EXTENSIONS=true
- STABLE_EXTENSIONS=wps - STABLE_EXTENSIONS=wps,csw
- INITIAL_MEMORY=1G - INITIAL_MEMORY=1G
- MAXIMUM_MEMORY=2G - MAXIMUM_MEMORY=2G
volumes: volumes: