Win10下在 Docker 中运行 RocketMQ

48 阅读1分钟

参考官方文档:Docker 部署 RocketMQ | RocketMQ

5版本会报错

image.png

4.启动Broker

Win10会报错需修改如下

docker run -d `
      --name rmqbroker `
      --net rocketmq `
      -p 10912:10912 `
      -p 10911:10911 `
      -p 10909:10909 `
      -e "NAMESRV_ADDR=rmqnamesrv:9876" `
      -v ${PWD}/broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.conf `
      apache/rocketmq:4.9.6 sh mqbroker `
      -c /home/rocketmq/rocketmq-4.9.6/conf/broker.conf

执行java程序ProducerExample报错

 你的问题图解

你的本地Java程序 (IP: 192.168.1.2)
         ↓ 可以访问 ✅
NameServer容器 (127.0.0.1:9876) [端口映射到宿主机]
         ↓
NameServer查询注册表
         ↓
Broker注册信息: "我是Broker,我的地址是 172.18.0.3:10911" 
         ↓
NameServer把这个地址返回给你的程序
         ↓
你的程序尝试连接 172.18.0.3:10911
         ↓
连接失败 ❌ (因为这是Docker内部IP,你的程序在Docker外部)

 解决办法

需要配置 brokerIP1

步骤1:进入Broker容器修改配置

bash

# 查看容器名称或ID
docker ps

# 进入Broker容器(通常叫rmqbroker或类似名称)
docker exec -it <broker容器名或ID> /bin/bash

步骤2:修改broker.conf文件

在容器内找到并编辑配置文件:

bash

# 查找配置文件位置
find / -name "broker.conf"

# 编辑配置文件(路径可能不同,根据上面查找结果调整)
vi /home/rocketmq/rocketmq-4.9.6/conf/broker.conf

在文件末尾添加以下关键配置(使用你宿主机的真实IP):

properties

# 关键:强制Broker注册时使用宿主机IP
brokerIP1 = 你的宿主机IP地址

查看配置文件显示乱码:cat /home/rocketmq/rocketmq-4.9.6/conf/broker.conf

image.png

解决办法:覆写

echo "brokerIP1=192.168.1.2" > /home/rocketmq/rocketmq-4.9.6/conf/broker.conf

显示正确

image.png

步骤3:重启Broker容器

bash

# 退出容器
exit

# 重启容器
docker restart <broker容器名或ID>

步骤4:正确启动后显示

image.png

执行程序正常

生产消息正常

image.png

消费消息正常

image.png