RabbitMQ и Kafka — два популярных инструмента для обмена сообщениями в распределённых системах. Но их установка и настройка может занять часы. В этой статье мы поднимем оба брокера за считанные минуты с помощью Docker, разберём основные параметры и проверим, что всё работает.
В этой инструкции вы узнаете:
как развернуть RabbitMQ и Kafka в Docker за несколько минут;
какие параметры конфигурации нужны для базовой работы;
как проверить запуск и обмен сообщениями.
docker compose up -d
…и через пару минут у вас работают RabbitMQ и Kafka, готовые к тестам.
Поехали разбирать всё пошагово.
📦 Что тебе нужно
- Установленный Docker Desktop (Можно взять по ссылке https://www.docker.com/products/docker-desktop)
- Любой текстовый редактор (например, VS Code или Notepad++)
- Терминал (cmd, PowerShell, Terminal, Bash)
🐰 Установка RabbitMQ
1. Запусти команду в терминале:docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=myuser -e RABBITMQ_DEFAULT_PASS=mypassword rabbitmq:3-management
Разберем каждую часть команды:
docker run
— запускает новый контейнер из указанного образа.-d
— detached mode (отключённый режим).
Контейнер запускается в фоне, и терминал не блокируется. Можно продолжать работать в командной строке.--name rabbitmq
— даёт контейнеру имяrabbitmq
.
Это удобно, чтобы потом ссылаться на контейнер по имени, а не по ID.-p 5672:5672
— проброс порта из контейнера на хост.
Формат:<хостовой порт>:<порт внутри контейнера>
.
Здесь порт 5672 (стандартный AMQP-порт RabbitMQ) внутри контейнера доступен на порту 5672 на хосте.-p 15672:15672
— проброс порта для веб-интерфейса RabbitMQ Management (порт 15672).rabbitmq:3-management
— имя образа и тег версии.
Здесьrabbitmq
— имя образа,3-management
— тег (версия с включённым Management Plugin, то есть с веб-интерфейсом).-e RABBITMQ_DEFAULT_USER=myuser
— задаёт имя пользователя.-e RABBITMQ_DEFAULT_PASS=mypassword
— задаёт пароль.После запуска с такими параметрами в веб-интерфейсе и в подключениях будет использоваться именно этот логин и пароль.
При этом пользователь guest будет работать. Но только внутри сети (начиная с версии RabbitMQ 3.3.0), снаружи не получится под ним подключаться.
2. Открой веб-интерфейс: http://localhost:15672
или http://<IP_хоста>:15672
.
3. Логин и пароль по умолчанию:guest/guest.
Но лучше подключаться под своим пользователем, которого указали в команде с настройкой -e.
☕ Установка Kafka и Kafka UI
1. Создай файл docker-compose.yml со следующим содержимым
Коротко о файле:
zookeeper — запускает ZooKeeper на 2181.
kafka — запускает Kafka, который зависит от ZooKeeper.
kafka-ui — веб-интерфейс для управления и мониторинга Kafka на порту 8080.
version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.6.0
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ports:
- "2181:2181"
kafka:
image: confluentinc/cp-kafka:7.6.0
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 # для работы внутри Docker
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
kafka-ui:
image: provectuslabs/kafka-ui
ports:
- "8080:8080"
depends_on:
- kafka
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
2. Запусти в терминале из папки с файлом:
docker-compose up -d
3. Открой Kafka UI: http://localhost:8080 - это Kafka UI, где можно смотреть топики, сообщения, брокеров.
✅ Команды для управления контейнерами
Действие | Команда |
Посмотреть запущенные | docker ps |
Остановить контейнер | docker stop <имя> |
Удалить контейнер | docker rm <имя> |
Перезапустить все | docker-compose up -d |
Остановить все | docker-compose down |
Мы развернули RabbitMQ и Kafka в Docker, настроили их для базовой работы и проверили, что всё готово к использованию. Такой подход позволяет быстро поднимать окружение для тестов или обучения, не тратя время на сложную установку.
Дальше можно углубиться: подключить продвинутую конфигурацию, добавить мониторинг, или построить полноценный pipeline с использованием брокеров.