Docker Compose 部署 RocketMQ 5.4.0 完整指南(Windows Docker Desktop 专属)

🚀 Docker Compose 部署 RocketMQ 5.4.0 完整指南(Windows Docker Desktop 专属)

您已经掌握了 Compose 语法,现在我们手把手部署 RocketMQ 5.4.0!全程针对 Windows Docker Desktop 优化,避开所有坑!


📁 第一步:创建项目目录(关键!避免权限问题)

powershell 复制代码
# 在 C 盘用户目录创建(Docker Desktop 默认共享,最安全!)
cd C:\Users\$env:USERNAME
mkdir rocketmq-5.4.0
cd rocketmq-5.4.0

# 创建必要子目录
mkdir conf, logs, store, html

💡 为什么必须在 C 盘用户目录?

Docker Desktop for Windows 默认只共享 C:\Users,放这里 100% 避免挂载失败!

不选择在C盘也可以,但需要注意权限问题,有时候文件可能没有读写权限导致无法运行

📝 第二步:创建配置文件(3 个文件)

1️⃣ 创建 docker-compose.yml(复制粘贴即可)

yaml 复制代码
version: '3.8'
services:
  rmqnamesrv:
    image: apache/rocketmq:5.4.0
    container_name: rmqnamesrv
    ports:
      - "9876:9876"
    volumes:
      - ./logs/namesrv:/home/rocketmq/logs
      - ./store/namesrv:/home/rocketmq/store
    command: sh mqnamesrv
    networks:
      rmq-net:
        aliases:
          - namesrv

  rmqbroker:
    image: apache/rocketmq:5.4.0
    container_name: rmqbroker
    ports:
      - "10909:10909"  # HA 端口
      - "10911:10911"  # 服务端口
      - "10912:10912"  # VIP 通道端口
    volumes:
      - ./logs/broker:/home/rocketmq/logs
      - ./store/broker:/home/rocketmq/store
      - ./conf/broker.conf:/etc/rocketmq/broker.conf
    environment:
      NAMESRV_ADDR: "namesrv:9876"
      JAVA_OPTS: "-Duser.home=/home/rocketmq"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn128m"
    depends_on:
      - rmqnamesrv
    command: sh mqbroker -c /etc/rocketmq/broker.conf
    networks:
      rmq-net:
        aliases:
          - broker

  rmqconsole:
    image: apacherocketmq/rocketmq-console:2.0.0
    container_name: rmqconsole
    ports:
      - "8098:8080"
    environment:
      JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    depends_on:
      - rmqnamesrv
    networks:
      rmq-net:
        aliases:
          - console

networks:
  rmq-net:
    driver: bridge

为什么选这些镜像?

服务 镜像 选择理由
NameServer/Broker foxiswho/rocketmq:5.4.0 社区维护最稳定,5.4.0 标签存在,路径清晰
Console apacherocketmq/rocketmq-console:5.0.0 官方控制台,完美支持 5.x

2️⃣ 创建 conf/broker.conf(关键!解决连接问题)

powershell 复制代码
# 在 PowerShell 中执行(自动获取本机 IP 并写入配置)
$localIp = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "以太网*" | Select-Object -First 1).IPAddress
@"
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
# ⚠️ 重要:Windows Docker Desktop 必须用 host.docker.internal
brokerIP1 = host.docker.internal
listenPort = 10911
namesrvAddr = namesrv:9876
autoCreateTopicEnable = true
autoCreateSubscriptionGroup = true
flushDiskType = ASYNC_FLUSH
storePathRootDir = /home/rocketmq/store
storePathCommitLog = /home/rocketmq/store/commitlog
storePathConsumeQueue = /home/rocketmq/store/consumequeue
storePathIndex = /home/rocketmq/store/index
storeCheckpoint = /home/rocketmq/store/checkpoint
abortFile = /home/rocketmq/store/abort
diskMaxUsedSpaceRatio = 95
"@ | Out-File -FilePath conf\broker.conf -Encoding utf8

🔥 核心知识点

  • brokerIP1 = host.docker.internalWindows Docker Desktop 专属魔法
    • 容器内通过此域名自动解析到宿主机 Windows 系统
    • 生产者/消费者(在 Windows 本机运行)可通过 localhost:10911 连接
    • 控制台容器也能通过此地址管理 Broker
  • namesrvAddr = namesrv:9876 → 容器间通过 Compose 网络名通信(自动 DNS 解析)

💡 如果执行 PowerShell 命令失败,手动创建 conf/broker.conf确保包含 brokerIP1 = host.docker.internal


3️⃣ (可选)创建测试 HTML(验证环境)

powershell 复制代码
"<h1 style='color:#1890ff;text-align:center'>✅ RocketMQ 环境准备就绪!</h1><p style='text-align:center'>控制台地址: <a href='http://localhost:8090'>http://localhost:8090</a></p>" | Out-File -FilePath html\index.html -Encoding utf8

🚦 第三步:启动服务(3 条命令搞定)

powershell 复制代码
# 1. 启动所有服务(-d 后台运行)
docker-compose up -d

# 2. 查看启动状态(等待 10 秒让服务初始化)
Start-Sleep -Seconds 10
docker-compose ps

# 3. 检查关键日志(确认无报错)
docker-compose logs rmqbroker | Select-String "Register broker"
# 应看到:Register broker to name server namesrv:9876 successful

成功标志

复制代码
NAME          COMMAND                  STATUS
rmqnamesrv    "sh mqnamesrv"           Up 9876/tcp
rmqbroker     "mqbroker -c /etc/..."   Up 10909-10912/tcp
rmqconsole    "java -jar ..."          Up 8080/tcp

🔍 第四步:验证部署(3 重验证)

验证项 操作 预期结果
1. 控制台访问 浏览器打开 http://localhost:8090 看到 RocketMQ Console 界面
2. Broker 注册 控制台 → 集群 → Broker 看到 broker-a 节点(地址含 host.docker.internal
3. 本地连接测试 用 Java/Python 客户端连 127.0.0.1:9876 能创建 Topic 并收发消息

💡 控制台默认账号:无密码,直接登录


🛠️ 常见问题急救包(Windows 专属)

问题现象 原因 解决方案
挂载目录为空 Docker 未共享项目目录 Settings → Resources → File Sharing → 添加 C:\Users\你的名字\rocketmq-5.4.0
控制台连不上 Broker 未注册成功 检查 broker.confbrokerIP1 是否为 host.docker.internal
端口被占用 其他程序占用了 9876/10911 修改 docker-compose.yml 中宿主机端口(如 "9877:9876"
启动超时 内存不足 Docker Desktop Settings → Resources → Memory 调至 4GB+

📌 核心原理总结(为什么这样写)

配置项 作用 您熟悉的 Docker 命令类比
networks: rmq-net 创建专属网络 docker network create rmq-net
aliases: [namesrv] 服务别名(容器内 DNS) --network-alias namesrv
depends_on 启动顺序依赖 手动先启动 namesrv 再启动 broker
volumes 挂载日志/存储 持久化数据 -v ./logs:/home/rocketmq/logs
brokerIP1 = host.docker.internal Windows 容器访问宿主机的魔法 无直接对应(Docker Desktop 特有)

💡 终极提示

  1. 首次启动慢? → 镜像下载需要时间(约 500MB),耐心等待

  2. 想重置环境?

    powershell 复制代码
    docker-compose down -v  # -v 会删除挂载卷(谨慎!)
    docker-compose up -d
  3. 查看实时日志

    powershell 复制代码
    docker-compose logs -f rmqbroker  # -f 持续跟踪

现在您只需:

  1. 复制上面的 docker-compose.ymlbroker.conf
  2. 执行 docker-compose up -d
  3. 访问 http://localhost:8090

恭喜!已用 Docker Compose 成功部署 RocketMQ 5.4.0! 🎉

相关推荐
智驾34 分钟前
Claude Code + vscode + deepseek在Windows环境上的搭建教程
windows·vscode·claude
桌面运维家5 小时前
IDV3技术:优化Windows虚拟桌面音频体验
windows·音视频
AlfredZhao7 小时前
用Docker安全驯服OpenClaw,并打通社交软件
docker·飞书·openclaw
解道Jdon7 小时前
VSCode 2026年2月更新:技能市场、CLI、钩子支持
ide·windows·git·svn·eclipse·github·visual studio
love530love8 小时前
Windows 11 源码编译 vLLM 0.16 完全指南(RTX 3090 / CUDA 12.8 / PyTorch 2.7.1)
人工智能·pytorch·windows·python·深度学习·vllm·vs 2022
linuxxx1108 小时前
让openclaw使用系统命令:“rm“, “mkdir“, “touch“, “ls“, “cat“, “echo“
linux·服务器·windows
北极糊的狐8 小时前
Windows电脑能播放rmvb格式视频的软件,以及下载地址
windows·音视频
1nullptr8 小时前
Windows 10 文件名大小写敏感设置
windows
黑金白土8 小时前
OpenClaw + Docker + MiniMax 本地养“龙虾”方案
docker·minimax·openclaw·龙虾·龙虾本地部署
食指Shaye8 小时前
免费视频编辑软件FFmpeg 在windows上使用CMD命令行的操作说明
windows·ffmpeg