2020年8月

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 文件如下:

- 阅读剩余部分 -