Docker部署RocketMQ
RocketMQ 5.2.0 Docker Compose 部署文档
一、目录结构
创建目录:
cd rocketmq
最终目录结构:
rocketmq/ ├── docker-compose.yml ├── check.sh ├── broker/ │ └── conf/ │ ├── broker.conf │ └── plain_acl.yml.example └── dashboard/ └── data/ └── users.properties
二、broker.conf
请将
brokerIP1修改为当前服务器(或虚拟机)的 IP。
例如:
hostname -I
输出:
192.168.253.128
则配置如下:
# RocketMQ 5.4.0 Broker 简单配置 brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH # 消息保留时间(小时) fileReservedTime = 48 # 每天几点清理过期消息 deleteWhen = 04 # Broker 对外注册的 IP。 # 这里使用 docker compose 里固定给 broker 分配的 IP。 brokerIP1 = 172.28.0.20 listenPort = 10911 namesrvAddr = rocketmq-namesrv:9876 # 新手环境先打开自动创建, 生产环境建议改成 false autoCreateTopicEnable = true autoCreateSubscriptionGroup = true # 显式指定存储目录, 确保数据落在挂载卷 ./broker/store storePathRootDir = /home/rocketmq/store storePathCommitLog = /home/rocketmq/store/commitlog # 简单版先不启用 ACL。 # RocketMQ 5.4.0 推荐 ACL 2.0, 配置比 plain_acl.yml 复杂不少。 # 新手先跑通 MQ 和 Dashboard, 后续需要鉴权再单独加。 # authenticationEnabled = true # authorizationEnabled = true
三、docker-compose.yml
# RocketMQ 5.4.0 简单版 # 包含: NameServer + Broker + Dashboard # # 启动: docker compose up -d # 查看: docker compose ps # 日志: docker compose logs -f broker # 停止: docker compose down # # Dashboard: http://服务器IP:8180 # 登录账号: admin / admin123456 name: rocketmq services: namesrv: image: apache/rocketmq:5.5.0 container_name: rmqnamesrv hostname: rocketmq-namesrv user: root command: sh mqnamesrv restart: unless-stopped ports: - "9876:9876" environment: JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms512m -Xmx512m -Xmn256m" volumes: - ./namesrv/logs:/home/rocketmq/logs networks: rocketmq: ipv4_address: 172.28.0.10 healthcheck: test: ["CMD-SHELL", "bash -c 'cat < /dev/null > /dev/tcp/127.0.0.1/9876'"] interval: 10s timeout: 5s retries: 12 start_period: 20s broker: image: apache/rocketmq:5.5.0 container_name: rmqbroker hostname: rocketmq-broker user: root command: sh mqbroker -c /home/rocketmq/rocketmq-5.5.0/conf/broker.conf restart: unless-stopped depends_on: namesrv: condition: service_healthy ports: - "10909:10909" - "10911:10911" - "10912:10912" environment: JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms1g -Xmx1g -Xmn512m" volumes: - ./broker/store:/home/rocketmq/store - ./broker/logs:/home/rocketmq/logs - ./broker/conf/broker.conf:/home/rocketmq/rocketmq-5.4.0/conf/broker.conf networks: rocketmq: ipv4_address: 172.28.0.20 healthcheck: test: ["CMD-SHELL", "bash -c 'cat < /dev/null > /dev/tcp/127.0.0.1/10911'"] interval: 10s timeout: 5s retries: 12 start_period: 40s dashboard: image: apacherocketmq/rocketmq-dashboard:latest container_name: rmqdashboard hostname: rocketmq-dashboard restart: unless-stopped depends_on: namesrv: condition: service_healthy broker: condition: service_started ports: # 宿主机 8080 经常被占用, 所以这里用 8180 - "8180:8080" environment: JAVA_OPTS: >- -Drocketmq.namesrv.addr=rocketmq-namesrv:9876 -Drocketmq.config.loginRequired=true -Drocketmq.config.dataPath=/tmp/rocketmq-console/data -Dserver.port=8080 -Xms256m -Xmx256m volumes: - ./dashboard/data:/tmp/rocketmq-console/data - ./dashboard/logs:/root/logs networks: rocketmq: ipv4_address: 172.28.0.30 networks: rocketmq: driver: bridge ipam: config: - subnet: 172.28.0.0/16
四、启动
第一次部署:
docker compose up -d
重新部署:
docker compose down docker compose up -d
查看容器:
docker ps
正常应该看到:
rmqnamesrv rmqbroker rmqdashboard
五、查看日志
查看 Broker:
docker logs -f rmqbroker
启动成功会看到:
The broker[broker-a, 192.168.253.128:10911] boot success.
查看 NameServer:
docker logs -f rmqnamesrv
查看 Dashboard:
docker logs -f rmqdashboard
六、访问 Dashboard
浏览器访问:
http://服务器IP:8180
例如:
http://192.168.253.128:8180
七、验证 Broker 是否注册成功
进入 Broker:
docker exec -it rmqbroker bash
执行:
mqadmin clusterList -n namesrv:9876
正常输出:
#Cluster Name Broker Name Broker ID DefaultCluster broker-a 0
说明 Broker 已成功注册到 NameServer。
八、Spring Boot 配置
application.yml:
rocketmq: name-server: 192.168.253.128:9876 producer: group: demo-producer
九、防火墙开放(CentOS)
开放端口:
firewall-cmd --permanent --add-port=9876/tcp firewall-cmd --permanent --add-port=10909/tcp firewall-cmd --permanent --add-port=10911/tcp firewall-cmd --permanent --add-port=10912/tcp firewall-cmd --permanent --add-port=8082/tcp firewall-cmd --reload
十、常用命令
启动:
docker compose up -d
停止:
docker compose stop
重启:
docker compose restart
查看状态:
docker ps
查看日志:
docker logs -f rmqbroker docker logs -f rmqnamesrv docker logs -f rmqdashboard
进入 Broker:
docker exec -it rmqbroker bash
进入 NameServer:
docker exec -it rmqnamesrv bash
删除容器:
docker compose down
删除数据(慎用):
rm -rf store/* rm -rf logs/*
十一、端口说明
| 端口 | 说明 |
|---|---|
| 9876 | NameServer |
| 10911 | Broker 主端口 |
| 10909 | Broker VIP Channel |
| 10912 | HA 同步端口 |
| 8082 | RocketMQ Dashboard |
十二、部署成功标志
满足以下条件即表示部署成功:
✅
docker ps中存在rmqnamesrv、rmqbroker、rmqdashboard✅
docker logs rmqbroker显示The broker boot success✅
mqadmin clusterList -n namesrv:9876能查看到 Broker✅ 浏览器可以访问
http://服务器IP:8082✅ Dashboard 能正常显示 Cluster、Broker、Topic 等信息
至此,RocketMQ 5.5.0 单 Master Docker 部署完成。