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 с использованием брокеров.
baldr
Надо бы три раза подчеркнуть что конфигурацию в таком виде кроме как для одноразовых тестов использовать нельзя. Храни вас святой Нортон если вы решите использовать это на продакшене.
Непонятно что за версии вы советуете использовать. Kafka последних версий не нуждается в Zookeeper.
А почему имиджи из репозитории Confluent?
А зачем нужен Docker Desktop?