1. 选择 Repo
nameserver: rocketmqinc/rocketmq-namesrv
broker: rocketmqinc/rocketmq-broker
查找过程中发现 rocketmqinc 官方还有一个单独的 rocketmq 仓库,但是已经很久没更新了,所以选择比较新的
2. 目录挂载映射
默认 rocketmq 日志和存储放在 home 目录,用户是 root,配置如下:
namesrv:
本机 | 容器 |
---|
/d/docker/mq/logs | /root/logs |
/d/docker/mq/store | /root/store |
broker:
本机 | 容器 |
---|
/d/docker/mq/logs | /root/logs |
/d/docker/mq/store | /root/store |
/d/docker/mq/conf | /root/conf |
这里一开始犯了个错误,把自定义的 broker.conf
所在 conf 目录映射到了 rocketmq 的 workspace 里,造成 conf 目录被替换,而我的配置文件只有一个 broker.conf
,造成缺少其他配置文件无法启动 broker 的问题。
3. 配置 broker
本机的 conf 目录下建立自定义的 broker.conf
配置:
brokerClusterName = DefaultCluster
brokerName = broker-syf
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1=10.208.203.69
这里需要注意的是 brokerIP,需要指定为你的内/外网 ip。比如我连接的网络本机内网 ip 是 10.208.203.69
,后面才可以用 localhost 访问,否则默认的 172.x.x.x
是容器内网 ip,离开容器在外面是访问不到的。
同时在 docker-compose.yml
文件中手动指定我们刚刚创建的 broker.conf
,根据映射关系在容器中的路径是 /root/conf/broker.conf
,启动命令配置如下:
sh mqbroker -n namesrv:9876 -c /root/conf/broker.conf
完整的 docker-compose.yml
文件如下:
- 阅读剩余部分 -