Docker documentation for the dotCMS Content Management System

dotCMS supports running in Docker and within orchestrators such as Kubernetes. dotCMS releases and maintains 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, using both the official dotCMS Docker containers or 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. All dotCMS web properties run on these official Docker containers, including our primary (production) site, our authoring environments, and the dotCMS Demo site.

Prerequisites {Prerequisites}

It is important that users understand that Docker is not the same as a virtual machine. If you do not have experience using Docker containers, it is recommended that you watch at least the first eighteen minutes of the dotCMS Containerization Webinar.

Once you understand the value of running dotCMS within a container, and the basics of how to use Docker containers, you will need the following things to run dotCMS within Docker:

  • 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 a minimum of 8 GB of memory for a fully dockerized environment, e.g. dotCMS, elasticsearch and database.
      • This is the minimum required for development and demonstration; live authoring and especially production environments will likely require more memory than this.
  • 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
    • For nodes that will be hosting ElasticSearch containers, please make sure to set the vm.max_map_count property as described in the Elasticsearch documentation.

Images

All of the following Docker images are provided and maintained by dotCMS, and are publicly available on Docker hub.

  • For all images, the tag :latest points to the last released version.
  • Please click on the Image Name in the table below to access the image within the dotCMS Github repo.
Image NameDescriptionNotes
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.
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.
Elasticsearch/Open DistroAmazon's Elasticsearch Distro
  • This is a lightweight wrapper of OpenDistro 1.3.0 that allows for the administrative password to be easily changed.

Hosting and Orchestration

dotCMS requires a Docker compatible container hosting environment. However you are not limited in how you deploy your containers, and you are free to use the orchestrator of your choice (e.g. Kubernetes, Openshift, Docker Enterprise, Amazon ECS, Apache Mesos, Marathon, Docker Swarm, etc).

Configuration and Plugins

The dotCMS Docker containers have been designed to allow you to deploy plugins without the need to modify the Docker images, via both configuration and plugins.

| Configuration | Many configuration options are available without the need for a configuration plugin. |

  • Please see the Docker image documentation to see what options are available.
| Static Plugins | You can use static plugins with the official Docker images. |
  • Map your plugins directory into “/plugins/static” in the Docker image, and the image will automatically find and deploy the plugins.
  • Please see the Docker Reference Implementation documentation for an example of how this is done.
| OSGI Plugins | With a Docker image, you can load and manage OSGI plugins the same way as you would with any other dotCMS distribution. |
  • Please see the [OSGI Plugins] documentation for more information.