.gitignore | ●●●●● patch | view | raw | blame | history | |
Dockerfile | ●●●●● patch | view | raw | blame | history | |
README.md | ●●●●● patch | view | raw | blame | history | |
build.sh | ●●●●● patch | view | raw | blame | history | |
resources/overlays/README.txt | ●●●●● patch | view | raw | blame | history | |
resources/plugins/README.txt | ●●●●● patch | view | raw | blame | history | |
setup.sh | patch | view | raw | blame | history | |
sshd.conf | ●●●●● patch | view | raw | blame | history | |
start.sh | ●●●●● patch | view | raw | blame | history |
.gitignore
@@ -1,2 +1,8 @@ resources/geoserver.zip resources/* !resources/plugins/ resources/plugins/* !resources/plugins/README.txt !resources/overlays/ resources/overlays/* !resources/overlays/README.txt .idea Dockerfile
@@ -16,19 +16,98 @@ #-------------Application Specific Stuff ---------------------------------------------------- RUN apt-get -y install unzip openjdk-7-jre-headless openjdk-7-jre ENV GS_VERSION 2.6.1 ENV GEOSERVER_DATA_DIR /opt/geoserver/data_dir # Unset Java related ENVs since they may change with Oracle JDK ENV JAVA_VERSION= ENV JAVA_DEBIAN_VERSION= # Set JAVA_HOME to /usr/lib/jvm/default-java and link it to OpenJDK installation RUN ln -s /usr/lib/jvm/java-7-openjdk-amd64 /usr/lib/jvm/default-java ENV JAVA_HOME /usr/lib/jvm/default-java 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 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; \ fi; \ unzip /tmp/resources/geoserver.zip -d /opt && mv -v /opt/geoserver* /opt/geoserver ENV GEOSERVER_HOME /opt/geoserver ENV JAVA_HOME /usr/ # If a matching Oracle JDK tar.gz exists in /tmp/resources, move it to /var/cache/oracle-jdk7-installer # where oracle-java7-installer will detect it RUN if ls /tmp/resources/*jdk-*-linux-x64.tar.gz > /dev/null 2>&1; then \ mkdir /var/cache/oracle-jdk7-installer && \ mv /tmp/resources/*jdk-*-linux-x64.tar.gz /var/cache/oracle-jdk7-installer/; \ fi; #ENTRYPOINT "/opt/geoserver/bin/startup.sh" CMD "/opt/geoserver/bin/startup.sh" EXPOSE 8080 # Install Oracle JDK (and uninstall OpenJDK JRE) if the build-arg ORACLE_JDK = true or an Oracle tar.gz # was found in /tmp/resources ARG ORACLE_JDK=false RUN if ls /var/cache/oracle-jdk7-installer/*jdk-*-linux-x64.tar.gz > /dev/null 2>&1 || [ "$ORACLE_JDK" = true ]; then \ apt-get autoremove --purge -y openjdk-7-jre-headless && \ echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true \ | debconf-set-selections && \ echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" \ > /etc/apt/sources.list.d/webupd8team-java.list && \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \ apt-get update && \ apt-get install -y oracle-java7-installer oracle-java7-set-default && \ ln -s --force /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /var/cache/oracle-jdk7-installer; \ if [ -f /tmp/resources/jce_policy.zip ]; then \ unzip -j /tmp/resources/jce_policy.zip -d /tmp/jce_policy && \ mv /tmp/jce_policy/*.jar $JAVA_HOME/jre/lib/security/; \ fi; \ fi; #Add JAI and ImageIO for great speedy speed. WORKDIR /tmp RUN wget http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-linux-amd64.tar.gz && \ wget http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-1_1-lib-linux-amd64.tar.gz && \ gunzip -c jai-1_1_3-lib-linux-amd64.tar.gz | tar xf - && \ gunzip -c jai_imageio-1_1-lib-linux-amd64.tar.gz | tar xf - && \ mv /tmp/jai-1_1_3/lib/*.jar $JAVA_HOME/jre/lib/ext/ && \ mv /tmp/jai-1_1_3/lib/*.so $JAVA_HOME/jre/lib/amd64/ && \ mv /tmp/jai_imageio-1_1/lib/*.jar $JAVA_HOME/jre/lib/ext/ && \ mv /tmp/jai_imageio-1_1/lib/*.so $JAVA_HOME/jre/lib/amd64/ && \ rm /tmp/jai-1_1_3-lib-linux-amd64.tar.gz && \ rm -r /tmp/jai-1_1_3 && \ rm /tmp/jai_imageio-1_1-lib-linux-amd64.tar.gz && \ rm -r /tmp/jai_imageio-1_1 WORKDIR $CATALINA_HOME # 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/${GS_VERSION}/geoserver-${GS_VERSION}-war.zip \ -O /tmp/resources/geoserver.zip; \ fi; \ unzip /tmp/resources/geoserver.zip -d /tmp/geoserver \ && unzip /tmp/geoserver/geoserver.war -d $CATALINA_HOME/webapps/geoserver \ && rm -rf $CATALINA_HOME/webapps/geoserver/data \ && rm -rf /tmp/geoserver # 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 $CATALINA_HOME/webapps/geoserver/WEB-INF/lib/ \ && rm -rf /tmp/gs_plugin; \ done; \ fi # Overlay files and directories in resources/overlays if they exist RUN rm /tmp/resources/overlays/README.txt && \ if ls /tmp/resources/overlays/* > /dev/null 2>&1; then \ cp -rf /tmp/resources/overlays/* /; \ fi; # Optionally remove Tomcat manager, docs, and examples ARG TOMCAT_EXTRAS=true RUN if [ "$TOMCAT_EXTRAS" = false ]; then \ rm -rf $CATALINA_HOME/webapps/ROOT && \ rm -rf $CATALINA_HOME/webapps/docs && \ rm -rf $CATALINA_HOME/webapps/examples && \ rm -rf $CATALINA_HOME/webapps/host-manager && \ rm -rf $CATALINA_HOME/webapps/manager; \ fi; # Delete resources after installation RUN rm -rf /tmp/resources README.md
@@ -40,6 +40,49 @@ docker build -t kartoza/postgis . ``` ### Building with Oracle JDK To replace OpenJDK Java with the Oracle JDK, set build-arg `ORACLE_JDK=true`: ```shell docker build --build-arg ORACLE_JDK=true -t kartoza/postgis . ``` Alternatively, you can download the Oracle JDK 7 Linux x64 tar.gz currently in use by [webupd8team's Oracle JDK installer](https://launchpad.net/~webupd8team/+archive/ubuntu/java/+packages) (usually the latest version available from Oracle) and place it in `resources` before building. To enable strong cryptography when using the Oracle JDK (recommended), download the [Oracle Java policy jar zip](http://docs.geoserver.org/latest/en/user/production/java.html#oracle-java) for the correct JDK version and place it at `resources/jce_policy.zip` before building. ### 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`. ### Removing Tomcat extras during build To remove Tomcat extras including docs, examples, and the manager webapp, set the `TOMCAT_EXTRAS` build-arg to `false`: ```shell docker build --build-arg TOMCAT_EXTRAS=false -t kartoza/postgis . ``` ### Building with file system overlays (advanced) The contents of `resources/overlays` will be copied to the image file system during the build. For example, to include a static Tomcat `setenv.sh`, create the file at `resources/overlays/usr/local/tomcat/bin/setenv.sh`. You can use this functionality to write a static GeoServer directory to `/opt/geoserver/data_dir`, include additional jar files, and more. Overlay files will overwrite existing destination files, so be careful! ## Run You probably want to also have postgis running too. To create a running @@ -76,12 +119,26 @@ 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 Tim Sutton (tim@kartoza.com) May 2014 Shane St Clair (shane@axiomdatascience.com) Alex Leith (alexgleith@gmail.com) build.sh
@@ -1,7 +1,3 @@ #!/bin/sh if [ ! -f resources/geoserver.zip ] then wget -c http://downloads.sourceforge.net/project/geoserver/GeoServer/2.5.2/geoserver-2.5.2-bin.zip -O resources/geoserver.zip fi docker build -t kartoza/geoserver . resources/overlays/README.txt
New file @@ -0,0 +1,14 @@ To include files in the container file system at arbitrary locations, build a directory structure from / here and include the files at the desired location. For example, to include a static Tomcat setenv.sh in the build, place it at: resources/overlays/usr/local/tomcat/bin/setenv.sh Other overlay examples include static GeoServer data directories, the Marlin renderer, etc. Note that overlay files will overwrite existing destination files, and that files in the overlay root will be copied to the container root (e.g. resources/overlay/somefile.txt will be copied to /somefile.txt). Be careful! resources/plugins/README.txt
New file @@ -0,0 +1,2 @@ Download plugin zips and place them here when building to include them in the container's GeoServer deployment. setup.sh
sshd.conf
File was deleted start.sh
File was deleted