Skip to content

gubuntu/docker-geoserver

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker-geoserver

A simple docker container that runs Geoserver, influenced by this docker recipe: https://github.com/eliotjordan/docker-geoserver/blob/master/Dockerfile

Note: We recommend using apt-cacher-ng to speed up package fetching - you should configure the host for it in the provided 71-apt-cacher-ng file.

Getting the image

There are various ways to get the image onto your system:

The preferred way (but using most bandwidth for the initial image) is to get our docker trusted build like this:

docker pull kartoza/geoserver

To build the image yourself without apt-cacher-ng (also consumes more bandwidth since deb packages need to be refetched each time you build) do:

docker build -t kartoza/geoserver git://github.com/kartoza/docker-geoserver

To build with apt-cacher-ng (and minimised download requirements) you need to clone this repo locally first and modify the contents of 71-apt-cacher-ng to match your cacher host. Then build using a local url instead of directly from github.

git clone git://github.com/kartoza/docker-geoserver

Now edit 71-apt-cacher-ng then do:

docker build -t kartoza/geoserver .

Pre-downloading files

Inspect downloads.sh to confirm which files you want, then run .downloads.sh.

If you don't make changes it will download Oracle Java and various Oracle and Geoserver extensions that will be used during the Docker build.

Building with Oracle JDK

To replace OpenJDK Java with the Oracle JDK, set build-arg ORACLE_JDK=true:

docker build --build-arg ORACLE_JDK=true -t kartoza/geoserver .

Alternatively, you can download the Oracle JDK 8 Linux x64 tar.gz from Oracle or the webupd8team's Oracle JDK installer (usually the latest version available from Oracle) and place it in resources before building. Note: the Dockerfile currently will only pick up the Oracle one; it needs to be adapted to pick up the webupd8 one.

To enable strong cryptography when using the Oracle JDK (recommended), download the Oracle Java policy jar zip 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:

docker build --build-arg TOMCAT_EXTRAS=false -t kartoza/geoserver .

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 container do:

docker run --name "postgis" -d -t kartoza/postgis:9.4-2.1
docker run --name "geoserver"  --link postgis:postgis -p 8080:8080 -d -t kartoza/geoserver

You can also use the following environment variables to pass a user name and password to postgis:

  • -e USERNAME=
  • -e PASS=

These will be used to create a new superuser with your preferred credentials. If these are not specified then the postgresql user is set to 'docker' with password 'docker'.

There is also a convenience run script that will setup a postgis container and a geoserver container in the run.sh script for this repository.

Note: The default geoserver user is 'admin' and the password is 'geoserver'. We highly recommend changing these as soon as you first log in.

Storing data on the host rather than the container.

Docker volumes can be used to persist your data.

mkdir -p ~/geoserver_data
docker run -d -v $HOME/geoserver_data:/opt/geoserver/data_dir kartoza/geoserver

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:

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:

docker run -d -v $HOME/setenv.sh:/usr/local/tomcat/bin/setenv.sh kartoza/geoserver

Credits

About

A docker recipe for GeoServer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%