diff --git a/Dockerfile b/Dockerfile index aaa0d74..0b92208 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 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 ENV GS_VERSION=${GS_VERSION} \ - WAR_URL=${WAR_URL} \ + GEOSERVER_DIR=${CATALINA_HOME}/webapps/geoserver \ STABLE_PLUGIN_URL=${STABLE_PLUGIN_URL} \ - INITIAL_MEMORY="2G" \ - MAXIMUM_MEMORY="4G" \ + INITIAL_MEMORY=2G \ + MAXIMUM_MEMORY=4G \ JAIEXT_ENABLED=true \ DOWNLOAD_EXTENSIONS=false \ STABLE_EXTENSIONS='' \ @@ -30,10 +35,35 @@ RUN apt update && \ # install geoserver 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 && \ - mkdir -p ${CATALINA_HOME}/webapps/geoserver && \ - unzip -q ${CATALINA_HOME}/webapps/geoserver.war -d ${CATALINA_HOME}/webapps/geoserver && \ + 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 diff --git a/docker-compose-demo.yml b/docker-compose-demo.yml index 64c5493..6a3a9a0 100644 --- a/docker-compose-demo.yml +++ b/docker-compose-demo.yml @@ -3,11 +3,14 @@ services: geoserver: build: context: . + args: + - CORS_ENABLED=true + - CORS_ALLOWED_METHODS=GET,POST,PUT,HEAD,OPTIONS ports: - 8080:8080 environment: - DOWNLOAD_EXTENSIONS=true - - STABLE_EXTENSIONS=wps + - STABLE_EXTENSIONS=wps,csw - INITIAL_MEMORY=1G - MAXIMUM_MEMORY=2G volumes: