Installing Atlassian Software as a Breezy with Docker

If you like me, maintain and update one of the Atlassian tools, you know that is not a strain forward task, there is no auto update and that is because some facts, one of then is the tomcat container and the custom configurations, the most common is run behind a apache proxy.

If you use more than one tool that is just too time consuming! There are 2 major problems for Sysadmins:

The frequency of updates is kind of frequently :-) You need to manually redo any custom config like apache proxy Well, I present to you the easiest way to install and update this softwares, even with any custom config!

Docker for the rescue

With docker we could create a image of the installation and run a isolated process in a virtual file system. And we could separate files and databases from the image, in a way that the image is disposable. In this solution you could port the applications between server with easy

Instead of teach you the docker thing, I will just give you the solution I pre-made of, because is generic enough for production and for evaluations, and you could find plenty of docker documentation. You can extend my image if you want, but I think in most cases you don’t need.

In fact I use this solution in production in one server running several Atlassian products at the same time.

No more talking, and hands one.

Installing All At Once

You will install: Jira, Confluence, Stash, Bamboo and Crowd all at once in separated containers for database data and file data home (jira-home, stash-home, etc…), and access everything in your production DNS for each application in a proxy autoconfigured. As a bonus you could setup SSL for each one.

What do you installed:

  • Docker 1.5
  • Crane

After the installation check out the README of one project image:

Download the crane.yml file, change the env VIRTUAL_HOST and PROXY with your needs, you can remove any application you want.

Run: /usr/local/bin/crane lift -c crane.yml

Create the databases in the postgresql container (connect to the container with: docker exec -i -t postgresql bash)

That’s it!

Now every application is running behind a proxy, you could setup each one as a new installation, or restore your backup files in the _applicationNamehome containers and in the separated _pgsqldatastore container

The Database host for the setup is “db” without quotation marks

To configure SSL you just need to drop the files in /opt/certs with the the virtualhost name, like: and and restart nginx container (docker stop nginx; docker start nginx)