Written by The Jahia Team
   Estimated reading time:

Docker is the main container technology that helps to accelerate and standardize the deployment of thousands of applications. Jahia leverages Docker in its Cloud offering, and supports on-premise Docker installations, both for development and production purposes.

This topic helps to get you started with the Jahia and jCustomer Docker images and provides best practices for you to gain productivity and proficiency.

Prerequisites

Before using Docker, ensure that you have:

  • A basic understanding of containers
  • Administrator rights on the machine that will run Docker
  • Docker installed. You can download Docker here and follow install steps on the website

There is no need for Java or any other Jahia prerequisites as they are packaged in the Docker container. This highlights one of the advantages of containers.

Note: On Windows and MacOS, Docker is not run natively, and instead executes inside a Virtual Machine. The resources allocated to Docker (for example, RAM and CPU) depends on both your machine’s specifications on the virtual machine’s. They should be set according to your needs. For more information, see the Docker Desktop for Windows documentation or Docker Desktop for Mac documentation.
On both systems, at least 4GB of memory should be allocated to Docker to run Jahia, and 8GB to run the full Jahia, database, jCustomer and Elasticsearch suite.

Jahia Docker images

Starting with Jahia 8.0.3.0, our Docker repositories and images have been re-organized to improve the consistency and for better support of Jahia features.

Images Tag example Description
jahia/jahia-ee 8.0.3.0 Multi-purpose Jahia image, suited to running development and production workloads. 
jahia/jahia-discovery 8.0.3.0 Jahia image pre-installed with additional modules to facilitate development and discovery. The Jahia discovery image is built from the jahia/jahia-ee image and supports all of its features.
jahia/jcustomer 1.5.1 Multi purpose jCustomer image, suited to running development and production workloads.

To pull an image from Docker Hub, copy and paste this command into your terminal:

docker pull jahia/jahia-ee:8.0.3.0

After executing the command, the image downloads and is available to be run right away.

Previous docker images (below 8.0.3.0)

The following images are available from Docker Hub:

Images Tag example Description
jahia/jahia 8.0.0.0 Multi-purpose Jahia image, suited to running development and production workloads. Compatible with MariaDB and MySQL. The tags without the _fs suffix store the Jackrabbit datastore in the database.
  8.0.0.0_fs The tags with the _fs suffix store the Jackrabbit datastore in a shared filesystem mounted on all Jahia instances.
jahia/jahia-dev 8.0.0.0 Jahia image configured in development mode, running with the embedded Derby database. Does not have external dependencies and can run as a standalone Docker image.

Instructions in the rest of this document are centered around the jahia/jahia-ee and jahia/jahia-discovery images. Although we will not be maintaining feature parity, most of the environment variables used in jahia/jahia and jahia/jahia-dev should be similar in behavior with the new images.

Anatomy of a Docker image

For building its containers, Jahia is chaining its Docker build process, and while our previous images (jahia/jahiajahia/jahia-dev) were built from the Jahia installer, each with its own and independent lifecycle, the new images are built directly from our source code and are following the dependency tree detailed below.

It means that instructions applicable to an image (and in particular when it comes to environment variables) are going to be applicable to all other images deriving from that image. 

Images Base image Dockerfile

jahia/jahia-core (Dockerfile)

 

tomcat:9-jdk11-openjdk-slim-buster

This image contains Jahia core (the codebase available at https://github.com/Jahia/jahia). It is not usable on its own since it does not include any modules. Its main purpose is to serve as base image for further builds. Most of the logic around how Jahia images are built is located in its Dockerfile and logic around how Jahia images are running is located in its entrypoint script.

jahia/jahia-opencore (Dockerfile) jahia/jahia-core Build from Jahia core, this image contains all of the open-source modules needed for a minimal version of Jahia with a usable administration interface but without any of the enterprise features. Referred to as Jahia Open-Core, it serves as a base image for building our enterprise image.
jahia/jahia-ee jahia/jahia-opencore Jahia enterprise image optimized for production use. It contains the most frequently used enterprise features (such as clustering). Additional modules can easily be added at runtime using the documented methods (module-manager API, provisioning API, filesystem or Jahia Administration). For example, the jahia/jahia-discovery image is built using jahia/jahia-ee as a base image.
jahia/jahia-discovery jahia/jahia-ee Built from jahia/jahia-ee image, this image includes additional module that are not necessarily relevant for production use (such as digitall), making this image a good fit for developer use or for those willing to easily discover Jahia using docker.