Dockerfile

pull/2/head
Luca Pasquali 2021-01-15 18:19:29 +01:00
parent 60b25f739f
commit f4ae8558f8
1 changed files with 114 additions and 0 deletions

114
Dockerfile 100644
View File

@ -0,0 +1,114 @@
FROM tomcat:9-jdk11-openjdk as mother
LABEL maintainer="Alessandro Parma<alessandro.parma@geo-solutions.it>"
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
RUN wget https://downloads.sourceforge.net/project/libjpeg-turbo/1.5.3/libjpeg-turbo-official_1.5.3_amd64.deb && dpkg -i ./libjpeg*.deb && apt-get -f install
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 LD_LIBRARY_PATH="/opt/libjpeg-turbo/lib64"
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 "/opt/libjpeg-turbo" "/opt/libjpeg-turbo"
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