Docker documentation for the dotCMS Content Management System

dotCMS supports running in Docker and within orchestrators and has created several Docker containers that can be used as a foundation for hosting a scalable dotCMS installation. Many dotCMS customers are currently using Docker containers for production deployments- either using our containers or using customized Docker containers. The dotCMS-provided containers are intended to be used the foundation for your Docker deployments and offer a range of configurable parameters to meet most use cases. These provided containers are currently used to run all dotCMS properties, including our primary site, our authoring environments and our demo dotCMS site.


  • Understanding of what Docker is.
  • A Docker compatible Linux container hosting environment.
    • For development purposes, you may use the official dotCMS Docker images with “Docker for Mac” or “Docker Desktop” for Windows.
      • Note: When using Docker Desktop for Windows, you must ensure that Docker is configured to use Linux images, rather than Windows images.
    • However for supported, production environments a Linux host environment is required.
  • Sufficient Memory
    • If you are running locally, please make sure you have the recommended amount of memory allocated to Docker. dotCMS recommends at least 8 GB of memory for a fully dockerized environment, e.g. dotCMS, elasticsearch and database.
  • A recent Docker version
    • If you are using Docker the recommended versions are:
      • docker: 18.03.1 (or later)
      • docker-compose 1.18.0 (or later)
  • Elasticsearch Settings


All of the following images are provided by dotCMS. These images are publicly available on Docker hub. For all images, the tag :latest points to the last released version.

Image NameRepository URLDescriptionNotes
dotCMS main dotCMS image.
  • Can be used as a standalone demo which uses H2, or configured to use a containerized database or a production ready database server.
  • When used by itself without a plugin, it is essentially the same as pulling down the tar/zip file of the release, uncompressing release, and running it.
  • Runs using H2 as its database and with embedded ElasticSearch and Caching.
haproxy example load balancer properly configured to work with dotCMS.
  • This image is intended for demonstration, development, and testing purposes only.
    • If your infrastructure has a load balancer, you should consider using it for production use rather than this image.
Hazelcast Hazelcast 3.9.2 and configuration and discovery scripts.
  • Enables dotCMS to dynamically discover the other nodes and dynamically scale Hazelcast caching layer independent of the number of dotCMS nodes.
Hazelcast ManCenter Hazelcast Mancenter in your containerized environment.
  • This image is completely optional, and is not required for a functioning dotCMS Docker installation.
  • Note: If you use more than two Hazelcast nodes, you must secure a license from Hazelcast for this tool to work properly.
ElasticSearch ElasticSearch 6.1.3 along with configuration and discovery scripts.
  • Dynamically discovers the nodes and enables dynamic scaling of ElasticSearch layer independently of the number of dotCMS nodes.
Postgres a Postgres container configured to work with the other nodes above.
  • It is recommended that you carefully evaluate the performance considerations of running your database in a container.
  • This Postgres container is provided to help those that choose to do so, and for those wishing to use it for development and testing purposes.

Hosting Environment

dotCMS requires a Docker compatible container hosting environment. Part of the beauty of containerization is that you are free to use the orchestrator of your choosing (e.g. Kubernetes, Openshift, Docker Enterprise, Amazon ECS, Apache Mesos, Marathon, Docker Swarm, etc). You can deploy the dotCMS-provided containers into the orchestrator of your choice.


Need to include custom configuration and/or custom code? We have you covered without requiring you to create your own docker image.

First, many configuration options are available without even requiring a configuration plugin. Consult our image documentation to see what options are available.

You can still use your static plugins with our official docker images. All you have to do to use your static plugins is to map your plugins directory into “/plugins/static” in the dotCMS image. You can refer to the reference implementation for an example of how this is done.