EEA & Eionet documentation hub

Browse documentation for IT-systems used by the European Environment Agency and the Eionet network.

EEA Plone KGS w/ EEA Add-ons ready to run Docker image



Docker image for Plone with EEA Common Add-ons available (formerly known as EEA Common Plone Buildout (KGS)

This image is generic, thus you can obviously re-use it within your non- related EEA projects.

Base docker image

Source code


  1. Install Docker
  2. Install Docker Compose (optional)


  • Python 2.7.12
  • Plone 4.3.10
  • Zope 2.13.24

Simple Usage

$ docker run -p 8080:8080 eeacms/kgs

Now, ask for http://localhost:8080/ in your workstation web browser and add a Plone site (default credentials admin:admin).

See more at plone

Advanced usage (ZEO, RelStorage, etc.)

Start ZEO server:

$ docker run -d --name=zeo \
             -e ZOPE_MODE=zeoserver \

Start 2 Plone clients:

$ docker run -d --name=zclient1 \
             -e ZOPE_MODE=zeo_client \
             --link=zeo:zeoserver \

$ docker run -d --name=zclient2 \
             -e ZOPE_MODE=zeo_client \
             --link=zeo:zeoserver \

Start load balancer:

$ docker run -d --name=lb \
             -p 8080:5000 \
             -p 1936:1936 \
             --link=zclient1 \
             --link=zclient2 \
             -e BACKENDS="zclient1 zclient2" \
             -e BACKENDS_PORT=8080 \
             -e DNS_ENABLED=true \

Check load-balancer back-ends health at http://localhost:1936/ (default credentials admin:admin). If everything looks OK go to http://localhost:8080/ and add your Plone site.

See detailed ZEO client examples.

Also you can run this image as:

Extending this image

For this you’ll have to provide the following custom files:

  • buildout.cfg
  • Dockerfile

Below is an example of buildout.cfg and Dockerfile to build a custom version of Plone with your custom versions of packages based on EEA KGS image:


extends = eea.cfg

auto-checkout =

eggs +=

land.copernicus.theme = git
land.copernicus.content = git


FROM eeacms/kgs:8.4

COPY buildout.cfg /plone/instance/
RUN buildout

and then run

$ docker build -t plone-land-copernicus .

Persist/Migrate data


$ docker pull eeacms/kgs

Supported environment variables

  • ZOPE_MODE Can be zeoserver, standalone, zeo_client, zeo_async, rel_client, rel_async. Default standalone
  • ZOPE_THREADS Configure zserver-threads. Default 2 (e.g.: ZOPE_THREADS=4)
  • ZOPE_FAST_LISTEN Set to off to defer opening of the HTTP socket until the end of the Zope startup phase. Defaults to off (e.g.: ZOPE_FAST_LISTEN=on)
  • ZOPE_FORCE_CONNECTION_CLOSE Set to on to enforce Zope to set Connection: close header. Default on (e.g.: ZOPE_FORCE_CONNECTION_CLOSE=off)
  • GRAYLOG Configure zope inside container to send logs to GrayLog. Default (e.g.:
  • GRAYLOG_FACILITY Custom GrayLog facility. Default eea.docker.kgs (e.g.:
  • RELSTORAGE_HOST Custom PostgreSQL address, postgres by default (e.g.: RELSTORAGE_HOST=
  • RELSTORAGE_USER Custom PostgreSQL user, zope by default (e.g.: RELSTORAGE_USER=plone)
  • RELSTORAGE_PASS Custom PostgreSQL password, zope by default (e.g.: RELSTORAGE_PASS=secret)
  • RELSTORAGE_KEEP_HISTORY history-preserving database schema, true by default (e.g.: RELSTORAGE_KEEP_HISTORY=false)

Release new versions of this image

Get source code

$ git clone

Update EEA_KGS_VERSION env within Dockerfile

$ cd eea.docker.kgs
$ vim Dockerfile

Commit changes

$ git commit -am "Release 19.5"

Create tag

$ git tag 19.5

Push changes

$ git push --tags
$ git push

Update release notes

$ docker run -it --rm -e GIT_NAME="eea.docker.kgs" eeacms/gitflow bash
$ / 19.4 19.5 2> /dev/null

Add output to

The Initial Owner of the Original Code is European Environment Agency (EEA). All Rights Reserved.

The Original Code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.


European Environment Agency (EU)

Edit this page