Public | Automated Build

Last pushed: 2 years ago
Short Description
A docker recipe for GeoServer
Full Description


A simple docker container that runs Geoserver influenced by this docker

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://

To build with apt-cacher-ng (and minimised download requirements) do 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

git clone git://

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

docker build -t kartoza/geoserver .

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 7 Linux x64 tar.gz currently in use by
webupd8team's Oracle JDK installer
(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
for the correct JDK version and place it at resources/ 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/

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,
create the file at resources/overlays/usr/local/tomcat/bin/

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!


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:


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 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/geserver

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 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 file as a volume at /usr/local/tomcat/bin/ when running:

docker run -d -v $HOME/ kartoza/geserver


Docker Pull Command
Source Repository