RocketMQ部署到Windows的Docker环境
Run RocketMQ in Docker
如何在docker容器中部署RocketMQ呢?官方的文档在这里:官方文档
如果你是Windows系统,那么按照官方的步骤,会有很多坑,折磨了我一天的时间,终于部署成功了,记录一下成功时刻。
1.Pull RocketMQ Image
docker pull apache/rocketmq:5.3.2
2.Create a Shared Network for Containers
docker network create rocketmq
3.Start NameServer
# Start NameServer
docker run -d --name rmqnamesrv -p 9876:9876 --network rocketmq apache/rocketmq:5.3.2 sh mqnamesrv
# Verify if NameServer started successfully
docker logs -f rmqnamesrv
4.Start Broker and Proxy
这一步开始就要对官方给的命令进行修改了,下面是官方给的Windows环境的命令
# Configure the broker's IP address
echo "brokerIP1=127.0.0.1" > broker.conf
# Start the Broker and Proxy
docker run -d ^
--name rmqbroker ^
--net rocketmq ^
-p 10912:10912 -p 10911:10911 -p 10909:10909 ^
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" ^
-v %cd%\broker.conf:/home/rocketmq/rocketmq-5.3.2/conf/broker.conf ^
apache/rocketmq:5.3.2 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.3.2/conf/broker.conf
# Verify if Broker started successfully
docker exec -it rmqbroker bash -c "tail -n 10 /home/rocketmq/logs/rocketmqlogs/proxy.log"
如果拿这个命令直接创建bat文件运行的话,会报错,因为里面有格式错误,即便是格式错误修复后,这个命令执行后启动的容器依然是无法访问的。这里真的是要吐槽一下官方,教程写的太不用心了。吐槽完毕,开始进行修改。下面是修改后的结果
REM Configure the broker's IP address
echo brokerIP1=192.168.1.4>broker.conf
REM Start the Broker and Proxy
docker run -d ^
--name rmqbroker ^
--net rocketmq ^
-p 10912:10912 -p 10911:10911 -p 10909:10909 ^
-p 8080:8080 -p 8081:8081 ^
-e "NAMESRV_ADDR=rmqnamesrv:9876" ^
-v %cd%\broker.conf:/home/rocketmq/rocketmq-5.3.2/conf/broker.conf ^
apache/rocketmq:5.3.2 sh mqbroker --enable-proxy ^
-c /home/rocketmq/rocketmq-5.3.2/conf/broker.conf
文件进行了几处修改
1.注释方式
“#”是Linux的注释,Windows应该用REM或::
2.“brokerIP1=127.0.0.1” 去掉了外面的双引号和后面的空格,这样修改的原因是在Windows环境中echo命令会输出后面的内容,双引号和空格都是作为内容输出的,输出到broker.conf文件就会导致配置格式不正确,rocketmq将会使用默认的配置;127.0.0.1修改为了192.168.1.4(这个是本地的ip地址,根据自己的地址修改,我的是192.168.1.4),这个修改主要是broker会将自己的IP:port注册到server上,如果不配置,就会使用docker容器的独立ip,因为Docker 容器默认运行在桥接网络(bridge)中,外部是无法访问的,所以这里要使用本地的地址。
3.末尾的“\”要修改为,是Windows命令的换行,代表着more,而“\”是Linux的换行
4.docker exec -it rmqbroker bash -c "tail -n 10 /home/rocketmq/logs/rocketmqlogs/proxy.log"命令要等上面的命令执行完成后再运行,否则日志文件还没有创建,会报错。上面的命令如果是正常执行结束,这里的日志输出会有下面的内容,代表着配置生效,成功创建了broker。
The broker[ec8bf02a57ed, 192.168.1.4:10911] boot success. serializeType=JSON and name server is rmqnamesrv:9876
broker创建成功后,下面就可以使用了。创建主题的命令如下:
docker exec -it rmqbroker bash
sh mqadmin updatetopic -t TestTopic -c DefaultCluster
以上就是我在Windows环境下,docker容器中配置rocketmq的全部过程了,踩了不少的坑,最终终于成功部署,可以开心的使用了。
更多推荐


所有评论(0)