Docker documentation for the dotCMS Content Management System

dotCMS currently provides preliminary support for dotCMS running in Docker and within orchestrators, in the form of several Docker containers that dotCMS has created. Though it is not yet recommended to use the Docker containers provided by dotCMS in a production environment, some dotCMS customers are currently using Docker containers for production dotCMS deployments using their own Docker containers, and the dotCMS-provided containers can be used as a base for your own Docker deployments. The dotCMS-provided Docker containers are currently used to run the dotCMS Demo Site.

Prerequisites

  • Caveats: Please make sure that you are familar with 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.
  • 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

Images

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
dotCMShttps://hub.docker.com/r/dotcms/dotcmsThe 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.
haproxyhttps://hub.docker.com/r/dotcms/haproxyAn 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.
Hazelcasthttps://hub.docker.com/r/dotcms/hazelcastProvides 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 ManCenterhttps://hub.docker.com/r/dotcms/hazelcast-mancenterRuns 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.
ElasticSearchhttps://hub.docker.com/r/dotcms/elasticsearchProvides 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.
Postgreshttps://hub.docker.com/r/dotcms/postgresProvides 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 Linux 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.

Plugins

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.