Docker Reference Implementation documentation for the dotCMS Content Management System

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 files 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. Our reference implementations are available Each reference implementation comes with a readme file that provides instructions on how to properly start and clean up the examples.

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

Not into docker-compose or swarm? Or maybe you are planning on running in Kubernetes. We have you covered.

We have a complete multinode Kubernetes Demo available HERE. 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. Required configuration for ElasticSearch containers