最近在学习消息中间件,先从rocketmq开始入手。这篇文章记录一次docker部署rocketmq的踩坑日记。
1.命令
# 别问,拿去复制粘贴
docker run -d -p 9876:9876 -v `pwd`/data/namesrv/logs:/root/logs -v `pwd`/data/namesrv/store:/root/store -v `pwd`/data/namesrv/conf/broker.conf:/opt/rocketmq-4.3.0/conf/broker.conf --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.3.0 sh mqnamesrv -c ../conf/broker.conf
docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/broker/logs:/root/logs -v `pwd`/data/broker/store:/root/store -v `pwd`/data/namesrv/conf/broker.conf:/opt/rocketmq-4.3.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.3.0 sh mqbroker -c ../conf/broker.conf
这样部署后,如果没问题那么就会报个错。
org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <docker内网IP:10909> failed
我们这里看到broker连接到了docker内网IP,这里我们给他配置一下。
如果有细心的同学 肯定会发现,上面我已经broker.conf文件给挂载出来了,那么我们现在cd 到宿主机的’pwd’/data/namesrv/conf下编辑它
vi pwd
/data/namesrv/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
### 添加下面两行 192.168.138.223这个就是你宿主机的ip,毕竟上面咱们映射端口了嘛
namesrvAddr = 192.168.138.223:9876
brokerIP1 = 192.168.138.223
然后咱们再重启一下两个容器即可。
如果按照上面流程失败的话,请留个评论,我会尽力帮你解决。