Docker Reference Implementations documentation for the dotCMS Content Management System

The dotCMS Docker reference implementations are implemented using docker-compose (which is also compatible with Docker Swarm), but can be run in any Linux Docker compatible orchestrator. We also have a complete multinode Kubernetes demo available. Each reference implementation comes with a readme file that provides instructions on how to properly start and clean up the examples.

Why Docker-compose?

The containers provided by dotCMS can be run in any Linux Docker compatible orchestrator. We have chosen to provide our reference implementation using docker-compose files. Docker compose files can be used by Docker Swarm as well as by docker-compose.

There are several reasons for chosing this file format:

  • The YAML file for docker-compose and Swarm is easy to understand, and is an effective way of communicating the needed configuration for services, volumes, and networks.
  • This format makes it easy for simple POCs and for developers to use the entire stack locally on their development machines.
  • It is easy to take the information from this reference implementation and to deploy these services in the orchestrator of your choice.

Reference Implementations

Demo Reference Implementation

https://github.com/dotCMS/docker/tree/master/referenceImplementations/01-demo

This reference implementation includes dotCMS and PostgresQL database and demonstrates how the dotCMS provided containers can be configured to function together in a simple demo configuration. This configuration only has two services - one service for dotCMS itself and one for the DB server.

Single Node Reference Implementation

https://github.com/dotCMS/docker/tree/master/referenceImplementations/02-single_node

This reference implementation includes dotCMS, HAProxy, PostgresQL and an externalized Elasticsearch container. It demonstrates how dotCMS can be scaled up behind a load balancer configured to function together on a single host node. This configuration uses internal caching only (no external hazelcast node) and a single external ElasticSearch node.

Full Stack Reference Implementation

https://github.com/dotCMS/docker/tree/master/referenceImplementations/03-full_stack

This reference implementation includes containers for dotCMS, PostgresQL, Hazelcast and Elasticsearch and demonstrates how the dotCMS provided containers can be configured to function together on a single host node. This configuration uses internal caching only (no external hazelcast node) and a single external ElasticSearch node.

Kubernetes Demo

You can find a complete multinode Kubernetes Demo available on Github. This example comes with scripts that will automatically spin up a three node Kubernetes cluster in Google Cloud Platform and deploy the entire dotCMS stack to the cluster.

While you may not be interested in the scripts for auto deployment, you should be able to use the deployment.yaml file without modification. You just need to provision Persistent volumes as seen in the prereq_template.yaml file.

The one other prerequisite that the prereq_template.yaml file takes care of is setting up a DaemonSet to ensure that the host nodes are configured properly for the ElasticSearch containers.

Important Implementation Details

The Reference implementations make use of the following open-source technologies to implement and manage the images: