Skip to content

Commit 21049d8

Browse files
authored
1 parent d376404 commit 21049d8

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@ FROM tomcat:9-jdk11-temurin as mother
22
LABEL maintainer="Alessandro Parma <[email protected]>"
33
SHELL ["/bin/bash", "-c"]
44

5+
ARG CORS_ENABLED=false
6+
ARG CORS_ALLOWED_ORIGINS=*
7+
ARG CORS_ALLOWED_METHODS=GET,POST,PUT,DELETE,HEAD,OPTIONS
8+
ARG CORS_ALLOWED_HEADERS=*
9+
ARG CORS_ALLOW_CREDENTIALS=false
10+
11+
ENV CORS_ENABLED=$CORS_ENABLED
12+
ENV CORS_ALLOWED_ORIGINS=$CORS_ALLOWED_ORIGINS
13+
ENV CORS_ALLOWED_METHODS=$CORS_ALLOWED_METHODS
14+
ENV CORS_ALLOWED_HEADERS=$CORS_ALLOWED_HEADERS
15+
ENV CORS_ALLOW_CREDENTIALS=$CORS_ALLOW_CREDENTIALS
16+
517
# download and install libjpeg-2.0.6 from sources.
618
ARG DEBIAN_FRONTEND=noninteractive
719
ARG CMAKE_BUILD_PARALLEL_LEVEL=8

entrypoint.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,50 @@
22
geoserver-plugin-download.sh ${CATALINA_BASE}/webapps/${APP_LOCATION}/WEB-INF/lib $PLUGIN_DYNAMIC_URLS
33
set -m
44
export CATALINA_OPTS="$CATALINA_OPTS $EXTRA_GEOSERVER_OPTS"
5+
6+
# Enable CORS (inspired by https://github.com/oscarfonts/docker-geoserver)
7+
# if enabled, this will add the filter definitions
8+
# to the end of the web.xml
9+
# (this will only happen if our filter has not yet been added before)
10+
if [ "${CORS_ENABLED}" = "true" ]; then
11+
if ! grep -q DockerGeoServerCorsFilter "$CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml"; then
12+
echo "Enable CORS for $CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml"
13+
14+
# Add support for access-control-allow-credentials when the origin is not a wildcard when specified via env var
15+
if [ "${CORS_ALLOWED_ORIGINS}" != "*" ] && [ "${CORS_ALLOW_CREDENTIALS}" = "true" ]; then
16+
CORS_ALLOW_CREDENTIALS="true"
17+
else
18+
CORS_ALLOW_CREDENTIALS="false"
19+
fi
20+
21+
sed -i "\:</web-app>:i\\
22+
<filter>\n\
23+
<filter-name>DockerGeoServerCorsFilter</filter-name>\n\
24+
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>\n\
25+
<init-param>\n\
26+
<param-name>cors.allowed.origins</param-name>\n\
27+
<param-value>${CORS_ALLOWED_ORIGINS}</param-value>\n\
28+
</init-param>\n\
29+
<init-param>\n\
30+
<param-name>cors.allowed.methods</param-name>\n\
31+
<param-value>${CORS_ALLOWED_METHODS}</param-value>\n\
32+
</init-param>\n\
33+
<init-param>\n\
34+
<param-name>cors.allowed.headers</param-name>\n\
35+
<param-value>${CORS_ALLOWED_HEADERS}</param-value>\n\
36+
</init-param>\n\
37+
<init-param>\n\
38+
<param-name>cors.support.credentials</param-name>\n\
39+
<param-value>${CORS_ALLOW_CREDENTIALS}</param-value>\n\
40+
</init-param>\n\
41+
</filter>\n\
42+
<filter-mapping>\n\
43+
<filter-name>DockerGeoServerCorsFilter</filter-name>\n\
44+
<url-pattern>/*</url-pattern>\n\
45+
</filter-mapping>" "$CATALINA_HOME/webapps/geoserver/WEB-INF/web.xml";
46+
fi
47+
fi
48+
549
catalina.sh run &
650
/usr/local/bin/geoserver-rest-config.sh
751
fg %1

0 commit comments

Comments
 (0)