This tutorial will show you how to setup RabbitMQ with Docker and docker-compose.
RabbitMQ is the most widely deployed open source message broker. RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols.Most organizations use RabbitMQ to send and receive messages to communicate between different application/services
For development purpose we can use Docker to spin up a local instance of the container and connect to it from our programming language of choice.
Using Docker command.
The easiest way to do this is to use the official RabbitMQ Docker image. Just use the official image in your Dockerfile and you’re good to go.
docker run -d --hostname my-rabbitmq --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10.6-management-alpineCode language: plaintext (plaintext)
Rabbitmq listens on port no 5672 and manage console is open on 15672.
rabbitmq official images comes in many variants. Please see Image Variants section.
I am using image with management features enabled.
Using with Docker-Compose
version: '3' services: rabbitmq: container_name: rabbitmq image: rabbitmq:3.10.6-management-alpine hostname: my-rabbitmq ports: - 5672:5672 - 15672:15672Code language: Java (java)
we start the RabbitMQ container with following command
docker-compose upCode language: plaintext (plaintext)
Once the container starts we can access the management console by navigating to http://localhost:15672
The default username/password is guest/guest
You can change default username/password with environment varibeles.
version: '3' services: rabbitmq: container_name: rabbitmq image: rabbitmq:3.10.6-management-alpine environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=admin ports: - 5672:5672 - 15672:15672 hostname: my-rabbitmqCode language: Dockerfile (dockerfile)
If you want to persist the storage, you can also create volume.
version: '3' services: rabbitmq: container_name: rabbitmq image: rabbitmq:3.10.6-management-alpine hostname: my-rabbitmq volumes: - './rabbitmq:/var/lib/rabbitmq/mnesia' ports: - 5672:5672 - 15672:15672Code language: Dockerfile (dockerfile)
If you want to run with docker command
docker run -d --hostname my-rabbitmq --name rabbitmq -p 5672:5672 -p 15672:15672 -v ./rabbit:/var/lib/rabbitmq rabbitmq:3.10.6-management-alpineCode language: plaintext (plaintext)
rabbitmq images come in many flavors, each designed for a specific use case.
This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.
This is the image which contains management plugin installed and enabled by default, which is available on the standard management port of 15672, with the default username and password of
This image is based on the popular Alpine Linux project, available in the
alpine official image. Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This option is appropriate when the final picture size is the most important consideration. The key disadvantage is that it uses musl libc rather than glibc and friends, therefore applications will frequently encounter troubles depending on the complexity of their libc requirements/assumptions.
You can also create custom image by using one of the above image as the base image and enabling the plugins at tuntime.
FROM rabbitmq:3.8-management RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stompCode language: Dockerfile (dockerfile)
Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner onlyCode language: plaintext (plaintext)
When you are mapping rabbitmq volume to /var/lib/rabbitmq you might see above error.
To overcome the issue you can point to volume to /var/lib/rabbitmq/mnesia
You can download all docker compose file from GitHub