1. 创建项目目录结构
mkdir -p /opt/rocketmq
cd /opt/rocketmq
mkdir -p {data/namesrv/logs,data/broker/logs,data/broker/store,config}
2. 创建 broker 配置文件
创建 config/broker.conf
文件:
3. 编写 docker-compose.yml
version: '3.8'
services:
namesrv:
image: apache/rocketmq:5.2.0
container_name: rocketmq-namesrv
ports:
- 9876:9876
volumes:
- ./data/namesrv/logs:/home/rocketmq/logs
command: sh mqnamesrv
environment:
- JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn256m
networks:
- rocketmq_net
broker:
image: apache/rocketmq:5.2.0
container_name: rocketmq-broker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- /opt/tuxun-env/rocketmq/data/namesrv/logs:/home/rocketmq/logs
- /opt/tuxun-env/rocketmq/data/broker/store:/home/rocketmq/store
- /opt/tuxun-env/rocketmq/config/broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf
command: sh mqbroker -c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf
environment:
- JAVA_OPT_EXT=-server -Xms1g -Xmx1g -Xmn512m
depends_on:
- namesrv
networks:
- rocketmq_net
dashboard:
image: apacherocketmq/rocketmq-dashboard:latest
container_name: rocketmq-dashboard
ports:
- 8080:8080
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876
depends_on:
- namesrv
networks:
- rocketmq_net
networks:
rocketmq_net:
driver: bridge
4. 重要配置说明
网络配置:
使用自定义网络
rocketmq_net
保证容器间通过服务名称通信Broker 配置中使用
namesrv:9876
访问 NameServer数据持久化:
NameServer 日志:
./data/namesrv/logs
Broker 日志和存储:
./data/broker/logs
和./data/broker/store
Broker 配置要点:
必须正确配置
brokerIP1
(生产环境建议使用宿主机IP)存储路径映射到容器内
/home/rocketmq/store
5. 启动服务
docker-compose up -d
6. 验证安装
检查容器状态:
docker-compose ps
访问控制台:
http://宿主机IP:8080
发送测试消息:
# 进入Broker容器
docker exec -it rocketmq-broker bash
# 发送测试消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
常见问题解决
Broker 无法连接 NameServer:
检查网络配置是否在同一网络
验证
namesrvAddr
配置是否正确查看 Broker 日志:
docker logs rocketmq-broker
控制台无法显示数据:
检查环境变量
JAVA_OPTS
中的 namesrv 地址确保防火墙开放了 9876 和 8080 端口
消息存储问题:
确认宿主机存储目录有写入权限
检查 broker.conf 中的存储路径配置
生产环境建议
集群部署:
部署多个 NameServer 和 Broker 组成集群
配置主从复制(ASYNC_MASTER/SLAVE)
资源调整:
根据需求调整 JVM 内存参数
配置适当的磁盘空间(建议 SSD)
安全配置:
启用 ACL 访问控制
配置 TLS 加密通信
监控告警:
集成 Prometheus + Grafana 监控
配置 RocketMQ 的告警规则
完整项目结构示例:
rocketmq/
├── docker-compose.yml
├── config/
│ └── broker.conf
├── data/
│ ├── namesrv/
│ │ └── logs/
│ └── broker/
│ ├── logs/
│ └── store/
└── .env
转载请注明:梦绘设计 » docker技术 » docker-compose 部署rocketmq
版权声明
本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。