Docker Desktop搭建RocketMQ图文教程
1. 准备工作
- 已安装Docker Desktop(本地安装方法参考上一节教程)。
- 需部署三个组件:NameServer、Broker、Console(管理界面)。
2. 创建目录和文件
- 在任意盘(如D盘)创建以下目录结构:
D:\rocketmq-docker ├── docker-compose.yml ├── conf/ │ └── broker.conf ├── logs/ └── store/
3. 编写docker-compose.yml
version: '3.5'
services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports:- 9876:9876volumes:- ./logs:/opt/logs- ./store:/opt/storenetworks:rmq:aliases:- rmqnamesrvrmqbroker:image: foxiswho/rocketmq:brokercontainer_name: rmqbrokerports:- 10909:10909- 10911:10911volumes:- ./logs:/opt/logs- ./store:/opt/store- ./conf/broker.conf:/etc/rocketmq/broker.confenvironment:NAMESRV_ADDR: "rmqnamesrv:9876"JAVA_OPTS: " -Duser.home=/opt"JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"command: mqbroker -c /etc/rocketmq/broker.confdepends_on:- rmqnamesrvnetworks:rmq:aliases:- rmqbrokerrmqconsole:image: styletang/rocketmq-console-ngcontainer_name: rmqconsoleports:- 8090:8080 # 管理界面端口可自定义environment:JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"depends_on:- rmqnamesrvnetworks:rmq:aliases:- rmqconsolenetworks:rmq:name: rmqdriver: bridge
4. 配置broker.conf
在conf/broker.conf
中写入以下内容(关键修改项已标粗):
# 集群名称
brokerClusterName=DefaultCluster
# Broker名称(Master/Slave需不同)
brokerName=broker-a
# 0表示Master
brokerId=0
# 宿主机IP(必须修改!)
brokerIP1=你的本机IP # 或通过hosts映射域名(如www.xiong.com)
# 自动创建Topic(线上建议关闭)
autoCreateTopicEnable=true
# 自动创建订阅组
autoCreateSubscriptionGroup=true
# 监听端口
listenPort=10911
# 刷盘方式(ASYNC_FLUSH或SYNC_FLUSH)
flushDiskType=ASYNC_FLUSH
5. 启动RocketMQ
- 在
docker-compose.yml
所在目录执行:docker-compose up -d
- 检查容器是否正常运行(通过Docker Desktop或
docker ps
)。
6. 访问管理界面
- 浏览器打开:
http://localhost:8090
(或自定义的端口)。 - 若配置了域名(如
www.xiong.com
),则访问:http://www.xiong.com:8090
。
7. 注意事项
- IP问题:
brokerIP1
必须设置为宿主机IP,否则生产者/消费者可能无法连接。 - 资源限制:默认JVM内存为128MB,可根据需求调整
JAVA_OPT_EXT
参数。 - 数据持久化:
logs
和store
目录用于持久化数据,避免容器重启丢失。
常见问题
- 连接失败:检查
brokerIP1
是否配置正确,或尝试在代码中禁用VIP通道:producer.setVipChannelEnabled(false);
- 端口冲突:修改
docker-compose.yml
中的端口映射(如9876、10911、8090)。
按此步骤即可完成RocketMQ的Docker部署!