7 - How to ease development with docker-compose

We are big fans of docker and all the ecosystem/tools around it. Docker can really ease our daily development workflow, here is a tip on how to use docker-compose to run all the required ESN services without effort.

First, install the fresh new version of docker and docker-compose. We use docker v1.10.0 and docker-compose v1.6.0 in this tip.

Clone the OpenPaaS ESN repository from https://github.com/linagora/openpaas-esn.git.

$ git clone https://github.com/linagora/openpaas-esn.git

Install npm and bower dependencies:

(We assume that you have node (v0.10.36) and so npm installed, if not check the awesome nvm)

$ cd openpaas-esn
$ npm install
$ # take a coffee or two, check your mails, twitter streams...

Once everything is ready, you can launch MongoDB, Redis, ElasticSearch, SabreDAV, with a single command:

ESN_HOST=192.168.X.Y docker-compose -f ./docker/dockerfiles/dev/docker-compose.yml up

Note : 192.168.X.Y is your local network computer IP address. Do not put localhost nor 127.0.0.1 since some services will have to call your ESN instance and using a local IP will fail. Use a IP address the ifconfig command will return.

Once services are started, you have to configure the ESN to use these docker services. We will refer to the YOUR_DOCKER_IP variable in the following instructions, replace this with your docker IP which should be ‘127.0.0.1’ or ‘localhost’ on Linux and ‘192.168.99.100’ on OS X/Windows (docker-machine based installation).

Let’s first generate local configuration files:

$ node ./bin/cli.js db --host <YOUR_DOCKER_IP>
  • YOUR_DOCKER_IP is the IP where MongoDB launched by docker-compose above can be reached (default to localhost, check the note above)

Once generated, let’s inject the required configuration into MongoDB:

$ node ./bin/cli.js docker-dev --host <YOUR_DOCKER_IP>
  • YOUR_DOCKER_IP is the IP where MongoDB launched by docker-compose above can be reached (default to localhost, check the note above)

Everything is now ready, you can start the OpenPaaS ESN in dev mode:

$ grunt dev

And browse http://localhost:8080. You should be able to login with the ‘admin@open-paas.org’ username and ‘secret’ password.

This is it! You are now able to hack on the OpenPaaS ESN code without having to install nor configure external services by hand.

Written on February 23, 2016