Recently I have been working on an application containing serval microservices. These microservices used RabbitMQ for communication between them. In order to develop this application I installed RabbitMQ on my machine as well as Erlang. This was not as easy as I thought it would be, it took me half a day to get it all working.
I am a Free Lance software developer and when I leave this contract I wanted my clients developers to be able to support this application. I was worried they would have to go though the struggles i went though while installing Erlang and RabbitMQ on Their windows machines.
The project itself was going to be running in AKS so everything on the server would be in containers anyways. Why not install RabbitMQ on my machine in Docker. My client’s developers were familiar with docker already. Why not create them a docker compose file which will set up everything for them. It has also occurred to me that they may invite me that they may call me back to make changes in the coming years. Future Linda will appreciate my doing this for her.
What is docker compose?
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.Â
So by creating a docker compose file I can configure not only RabbitMQ but the RabbitMQ management UI and open any ports I need to.
Installing RabbitMQ in Docker
To add RabbitMQ to Docker i would run the following commands
#This creates rabbit and opens the port.
docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 8080:15672 rabbitmq:3
# Creates the RabbitMQ UI management and opens to port 9000 Then you can do http://localhost:9000/#/ to see rabbit working.
docker run -d --hostname my-rabbit --name some-rabbit-management -p 9000:15672 rabbitmq:3-management
Now running those commands really isn’t that hard, but there is an easer way of doing this.
Creating docker-compose.yaml
In the docker-compose.yaml we tell it what docker image we would like to use. Give our container a name, and configure the ports.
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- 5672:5672
- 15672:15672
Running docker-compose.yaml
To run the docker compose file we only need to run the following command.
docker-compose up
This will install RabbitMQ and the ManagmentUI in docker and open it to the preconfigured standard RabbitMQ ports.
How to stop RabbitMQ
To stop the container you can then run
docker-compose down
This will cause the container to then stop running.
Conclusion
It is a very good idea to set up your development environment. Things like RabbitMQ, or your database are external services that your application will need to run. In the past all of these things had to be installed and configured before you can even begin working on your application.
Now a lot of these external applications can run in Docker. Setting up Docker compose to configure your development environment can make your life a lot easer. If in serval months you need to go back to this application you will be able to run the docker compose file and know that your development environment will be configured for you.