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.
    • Our images will work fine with “Docker for Mac” for development purposes but a Linux host environment is required for supported, production environments.
  • 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

Currently, there are six different docker images made available by dotCMS. These images are publicly available on Docker hub: https://hub.docker.com/u/dotcms/dashboard/

  • haproxy (dotcms/haproxy:latest) - This is included for an example of a load balancer properly configured to work with dotCMS. If your infrastructure has a load balancer, you should consider using it for production use rather than this image. This image is useful for demo, development, and testing purposes.
  • dotCMS (dotcms/dotcms:latest) - This is the main dotCMS image. It can be used by itself as a standalone demo which uses H2 or it can be 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. It will run using H2 as its database and with embedded ElasticSearch and Caching.
  • Hazelcast (dotcms/hazelcast:latest) - This image provides Hazelcast 3.9.2 along with our configuration and discovery scripts that allows dotCMS to dynamically discover these nodes and to enable dynamic scaling of the Hazelcast caching layer independent of the number of dotCMS nodes.
  • Hazelcast ManCenter (dotcms/hazelcast-mancenter:latest) - Image for running Hazelcasts Mancenter in your containerized environment. This image is totally optional and not at all required for a functioning system. Please note that if you scale your Hazelcast nodes to more than two, you will need to secure a license from Hazelcast for this tool to work properly. https://hazelcast.com/products/management-center/
  • ElasticSearch (dotcms/elasticsearch:latest) - This image provides ElasticSearch 6.1.3 along with our configuration and discovery scripts that allows dotCMS to dynamically discover these nodes and enable dynamic scaling of ElasticSearch layer independently of the number of dotCMS nodes.
  • Postgres (dotcms/postgres:latest) - Definitely need to weigh the performance considerations of running your database in a container. If you chose to do that, we provide this Postgres container for you. Even if you chose not to run your production database in a container, this image can be helpful 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) We provide the containers, and you deploy them 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 “/srv/plugins/static” in the dotCMS image. You can refer to the reference implementation for an example of how this is done.