1.拉取rocketmq镜像,拉取最新的镜像
docker pull apache/rocketmq:latest
2.创建共享网络rocketmq
docker network create rocketmq
3.部署NameServer前提条件
创建目录(windows)
mkdir D:\rocketmq\nameserver\bin
mkdir D:\rocketmq\nameserver\logs
创建临时容器并复制启动脚本
docker run -d --privileged=true --name rmqnamesrv apache/rocketmq:latest sh mqnamesrv
通过Docker Desktop进入rmqnamesrv镜像中查看此镜像的目录结构,已知当前版本为5.3.1
复制启动脚本
docker cp rmqnamesrv_temp:/home/rocketmq/rocketmq-5.3.1/bin/runserver.sh D:\rocketmq\nameserver\bin\
提示成功为复制成功,失败则需要确定路径
删除容器
docker rm -f rmqnamesrv_temp
4.启动NameServer容器
docker run -d --network rocketmq --privileged=true --restart=always --name rmqnamesrv -p 9876:9876 -v D:\rocketmq\nameserver\logs:/home/rocketmq/logs -v D:\rocketmq\nameserver\bin\runserver.sh:/home/rocketmq/rocketmq-5.3.1/bin/runserver.sh apache/rocketmq:latest sh mqnamesrv
查看日志,成功启动
5.部署 Broker + Proxy
创建目录
mkdir D:\rocketmq\broker\store,D:\rocketmq\broker\logs,D:\rocketmq\broker\conf,D:\rocketmq\broker\bin
6.创建 broker.conf 配置文件
在 D:\rocketmq\broker\conf\broker.conf
文件中写入以下内容
namesrvAddr = rmqnamesrv:9876 # 使用容器名代替 IP
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
brokerIP1 = 192.168.100.100 # 改为宿主机实际 IP(或容器 IP 若需要外部访问)
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
deleteWhen = 04
fileReservedTime = 72
autoCreateTopicEnable = true
autoCreateSubscriptionGroup = true
tlsTestModeEnable = false
7.复制 Broker 启动脚本
docker run -d --name rmqbroker_temp apache/rocketmq:5.3.1 sh mqbroker
docker cp rmqbroker_temp:/home/rocketmq/rocketmq-5.3.1/bin/runbroker.sh D:\rocketmq\broker\bin\
docker rm -f rmqbroker_temp
8.启动 Broker 容器
docker run -d --network rocketmq --name rmqbroker --privileged=true -p 10911:10911 -p 10909:10909 -v D:\rocketmq\broker\logs:/root/logs -v D:\rocketmq\broker\store:/root/store -v D:\rocketmq\broker\conf\broker.conf:/home/rocketmq/broker.conf -v D:\rocketmq\broker\bin\runbroker.sh:/home/rocketmq/rocketmq-5.3.1/bin/runbroker.sh -e "NAMESRV_ADDR=rmqnamesrv:9876" apache/rocketmq:latest sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf
查看日志,成功启动
9.部署RocketMQ控制台(rocketmq-dashboard)
拉取镜像
docker pull apacherocketmq/rocketmq-dashboard:latest
启动容器rocketmq-dashboard
docker run -d --name rmq-dashboard -p 18787:8080 --network rocketmq -e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" apacherocketmq/rocketmq-dashboard
查看日志,启动成功
10.访问RMQ控制台
http://127.0.0.1:18787