This repository has been archived by the owner. It is now read-only.
Docker Images for Adobe Experience Manager
Clone or download
Pull request Compare This branch is 15 commits ahead of adfinis-sygroup:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Docker Images for Adobe Experience Manager

This is a proof-of-concept I've modified and am archiving since
I have found a solution I like better at

AEM_6.X_Quickstart.jar & required in the project root

AEM Request Page

Update the VERSION environment variable in the .env file for your version of the AEM_6.X_Quickstart.jar for example:



Step 1 - Build the aem-base image

cd aem-base
docker build -t aem-base .


Step 2 - Build the aem-dispatcher image

cd aem-dispatcher
docker build -t aem-dispatcher .


Use docker-compose to create the author and publisher images if they do not already exist and implement the containers.

docker-compose up -d

This error indicates that port 80 already in use

ERROR: for dispatcher  Cannot start service dispatcher: b'driver failed programming external connectivity on endpoint docker_dispatcher_1 (ID): Error starting userland proxy: Bind for unexpected error Permission denied'
ERROR: Encountered errors while bringing up the project.

For example, stop the services using port 80 in Windows CMD (as administrator)

net stop was

Use docker stop [CONTAINER ID] instead of docker-compose down if you do not want to lose any changes made. docker start [CONTAINER ID] to continue where you left off.

repository persistence

Assuming that the aem images containers are up and running via docker-compose up -d from the previous section, use a Docker data only container, where we create a volume from the aem-author image. In this example, the aem author image is aem-author:6.3.

Step 1 - Needed is the the repository segmentstore path, e.g., /aem/crx-quickstart/repository/segmentstore

To get this path, shell into the container, e.g.,

docker exec it <CONTANER ID or NAME> sh

find . -name segmentstore

# cd to the returned path, e.g.,
cd ./crx-quickstart/repository/segmentstore

# get the path using pwd

Step 2 - After getting the segmentstore path, we can now stop the running aem containers or use docker-compose down to remove them since a new aem_author_instance container will be created in step 4 below.

Step 3 - Create the volume from the aem-author:6.3 image using the segmentstore path along with an aem_repo data container. e.g.,

docker create -v /aem/crx-quickstart/repository/segmentstore --name aem_arepo aem-author:6.3 /bin/true

Step 4 - Create a new aem_author_instance container using the --volumes-from option to mount the repository volume from the aem_repo data container

docker run -d --name=aem_author_instance --volumes-from aem_arepo -p 4502-4503:4502-4503 aem-author:6.3

Use docker ps -a to list running containers. You should see something similar to this output

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                        NAMES
224d8b551a64        aem-author:6.3        "/aem/crx-quickstart…"   14 seconds ago      Up 13 seconds>4502-4503/tcp, 8000/tcp   aem_author_instance
31747c4e25b4        aem-author:6.3        "/aem/crx-quickstart…"   44 seconds ago      Created                                                          aem_arepo

Now you can install packages and they will persist in the running aem_author_instance container. For example, upgrade AEM 6.3 with the AEM Service Pack package from AEM releases and updates

stop/start the aem_author_instance container as needed

docker stop aem_author_instance