Adobe Experience Manager & Docker — Part 2
So last time I left you, I’d put together a post on getting an Adobe Experience Manager 6 Author instance running in a Docker container. It was a great way for me to get my head around Docker, while also playing with the technology stack I’m currently using at work. Getting it running was fun, but by itself a single Author instance is a little pointless; you can achieve the same thing by clicking on the AEM JAR.
What isn’t pointless, is an Author+Publisher+Dispatcher stack, all running in individual Docker containers. To orchestrate all this madness, I’ve put together a Fig YAML file within a GitHub repo to co-ordinate the various containers. Fig basically is an orchestration utility for Docker to help describe relationships between containers.
Why Docker? It allows you to have a portable full AEM stack that you can distribute amongst your development team. The power of containerising the various AEM components allows you to ensure a consistent and repeatable configuration between team members. I definitely wouldn’t be using this in a production setting, but it’s perfectly fine for development.
Getting Started
- Make sure you’ve got Docker, Fig and boot2docker available; boot2docker is only required on MacOS X or Windows.
- Clone/Download the Github repo.
- Copy your the installation media and license files into the author and publisher directories. The install media must be given specific names depending on location. cq-author-4502.jar for author, and cq-publish-4503.jar for the publisher.
- Navigate to the basedirectory, and run: fig up.
- Go get a coffee.
- If all has gone to plan, the stack should be running. If you’re using boot2docker, you’ll need to reference it via its IP ( you can find it using boot2docker ip ). The ports are as follows:
- Dispatcher: Accessible over port 80 or 443. For example: http://192.168.59.103/content/geometrixx-outdoors/en.html .
- Publisher: Accessible over port 4503.
- Author: Accessible over port 4502.
Hopefully you’ll be able to enjoy your full stack AEM development.
A couple of notes/caveats
- Link relationships in Docker are currently only one way. There are a couple of ways around this, but for the moment, I’ve set the build to only allow one way communication between containers. Ie, author->publisher, dispatcher->publisher. The Fig DNS stuff looks interesting.
- The standard boot2docker image does not have enough disk or RAM to get this working correctly. Look at re-initialising it with at least 40gb of diskspace, and at least 4GB of memory: boot2docker init -m 4092 -s 40000 .
- I downgraded the base image from Centos7 to Centos6. I was having trouble installing Apache in Centos7, but it seemed to work fine under 6.
- The author->publisher replication configuration seems to be lost after setup. If it can’t connect, you’ll want to check that “publisher:4503” is set in the replication settings.