From 90ebb1ed84cf22b11f30aff2dd81124ced1ae457 Mon Sep 17 00:00:00 2001 From: Shane <shane@axiomdatascience.com> Date: Wed, 09 Mar 2016 18:23:34 +0800 Subject: [PATCH] Use WAR/Tomcat, support plugins, document setting memory --- Dockerfile | 33 +++++++++++++++++++++++---------- .gitignore | 1 + resources/plugins/README.txt | 2 ++ README.md | 22 +++++++++++++++++++++- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 51a5941..f5017bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ resources/geoserver.zip +resources/plugins/*.zip .idea diff --git a/Dockerfile b/Dockerfile index 9c8243b..7c16a5f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,19 +16,32 @@ #-------------Application Specific Stuff ---------------------------------------------------- -RUN apt-get -y install unzip openjdk-7-jre-headless openjdk-7-jre +EXPOSE 8080 + +ENV GS_VERSION 2.6.1 +ENV GEOSERVER_DATA_DIR /opt/geoserver/data_dir ADD resources /tmp/resources -# A little logic that will fetch the geoserver zip file if it -# is not available locally in the resources dir and +# A little logic that will fetch the geoserver war zip file if it +# is not available locally in the resources dir RUN if [ ! -f /tmp/resources/geoserver.zip ]; then \ - wget -c http://downloads.sourceforge.net/project/geoserver/GeoServer/2.6.1/geoserver-2.6.1-bin.zip -O /tmp/resources/geoserver.zip; \ + wget -c http://downloads.sourceforge.net/project/geoserver/GeoServer/${GS_VERSION}/geoserver-${GS_VERSION}-war.zip \ + -O /tmp/resources/geoserver.zip; \ fi; \ - unzip /tmp/resources/geoserver.zip -d /opt && mv -v /opt/geoserver* /opt/geoserver -ENV GEOSERVER_HOME /opt/geoserver -ENV JAVA_HOME /usr/ + unzip /tmp/resources/geoserver.zip -d /tmp/geoserver \ + && mv /tmp/geoserver/geoserver.war /usr/local/tomcat/webapps/geoserver.war \ + && unzip /usr/local/tomcat/webapps/geoserver.war -d /usr/local/tomcat/webapps/geoserver \ + && rm -rf /tmp/geoserver -#ENTRYPOINT "/opt/geoserver/bin/startup.sh" -CMD "/opt/geoserver/bin/startup.sh" -EXPOSE 8080 +# Install any plugin zip files in resources/plugins +RUN if ls /tmp/resources/plugins/*.zip > /dev/null 2>&1; then \ + for p in /tmp/resources/plugins/*.zip; do \ + unzip $p -d /tmp/gs_plugin \ + && mv /tmp/gs_plugin/*.jar /usr/local/tomcat/webapps/geoserver/WEB-INF/lib/ \ + && rm -rf /tmp/gs_plugin; \ + done; \ + fi + +# Delete resources after installation +RUN rm -rf /tmp/resources diff --git a/README.md b/README.md index c340570..102d19a 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,13 @@ docker build -t kartoza/postgis . ``` +### Building with plugins + +To build a GeoServer image with plugins (e.g. SQL Server plugin, Excel output plugin), +download the plugin zip files from the GeoServer download page and put them in +`resources/plugins` before building. You should also download the matching version +GeoServer WAR zip file to `resources/geoserver.zip`. + ## Run You probably want to also have postgis running too. To create a running @@ -76,10 +83,23 @@ docker run -d -v $HOME/geoserver_data:/opt/geoserver/data_dir kartoza/geserver ``` -You need to ensure the ``geoserver_data`` directory has sufficinet permissions +You need to ensure the ``geoserver_data`` directory has sufficient permissions for the docker process to read / write it. +## Setting Tomcat properties +To set Tomcat properties such as maximum heap memory size, create a `setenv.sh` file such as: + +```shell +JAVA_OPTS="$JAVA_OPTS -Xmx1536M -XX:MaxPermSize=756M" +JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled" +``` + +Then pass the `setenv.sh` file as a volume at `/usr/local/tomcat/bin/setenv.sh` when running: + +```shell +docker run -d -v $HOME/setenv.sh:/usr/local/tomcat/bin/setenv.sh kartoza/geserver +``` ## Credits diff --git a/resources/plugins/README.txt b/resources/plugins/README.txt new file mode 100644 index 0000000..aa8b33c --- /dev/null +++ b/resources/plugins/README.txt @@ -0,0 +1,2 @@ +Download plugin zips and place them here when building to include them in +the container's GeoServer deployment. -- Gitblit v0.0.0-SNAPSHOT