December 9, 2014

Adobe Experience Manager & Docker – Part 2

Written by

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 filewithin 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

  1. Make sure you’ve got Docker, Fig and boot2docker available; boot2docker is only required on MacOS X or Windows.
  2. Clone/Download the Github repo.
  3. 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.
  4. Navigate to the basedirectory, and run: fig up.
  5. Go get a coffee.
  6. 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.
Tags: ,

Categorised in: Devops, Technology

This post was written by Gerard Gigliotti