docker compose 安装rocketmq 4.x

官网参照

前置环境搭建

目录创建

创建两个目录 logs和store,用于存放日志和数据信息,位置随意,这里我放在/home/rockermq目录下

broker.conf

创建一个空文件broker.conf

在空文件中添加

bash 复制代码
# broker 对外提供服务的ip,如果是公网,则公网ip,如果本地测试,则本地机ip
brokerIP1 = 172.0.0.1
# Broker 的名称
brokerName = broker-a
# 在集群中对 Broker 的唯一标识。值 0 通常表示这是一个主 Broker
brokerId = 0
# 指定什么时候删除旧的提交日志。值 04 表示在每天的凌晨 4 点删除旧日志
deleteWhen = 04
# 指定提交日志文件的保留时间(以小时为单位)。这里的 48 意味着提交日志会保留 48 小时,然后才会被删除
fileReservedTime = 48
# 定义 Broker 在集群中的角色。ASYNC_MASTER 表示该 Broker 作为主 Broker,并会将消息异步复制到从 Broker
brokerRole = ASYNC_MASTER
# 定义提交日志的刷新模式。ASYNC_FLUSH 表示数据会异步刷新到磁盘,以提高性能。
flushDiskType = ASYNC_FLUSH
# 如果设置为 true,则启用消息属性过滤。这允许你除了通过主题和标签过滤消息外,还可以通过消息的属性进行过滤
enablePropertyFilter=true

编写compose文件

bash 复制代码
services:
  namesrv:
    image: rocketmqinc/rocketmq
    container_name: rmqnamesrv
    ports:
      - "9876:9876"
    volumes:
      - /home/learning-java/rocketmq/data/logs:/opt/rocketmq/logs
      - /home/learning-java/rocketmq/data/store:/opt/rocketmq/store
    command: sh mqnamesrv
    environment:
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn128m
    networks:
        rmq:
          aliases:
            - rmqnamesrv

  broker:
    image: rocketmqinc/rocketmq
    container_name: rmqbroker
    ports:
      - "10911:10911"
      - "10909:10909"
    volumes:
      - /home/learning-java/rocketmq/broker.conf:/opt/rocketmq/broker.conf
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
      - JAVA_OPTS=-Duser.home=/home/rocketmq
      - JAVA_OPT_EXT=-server -Xms521m -Xmx521m -Xmn128m
      - BROKER_MEM=521m
    command: sh mqbroker -c /opt/rocketmq/broker.conf
    depends_on:
      - namesrv
    networks:
      rmq:
        aliases:
          - rmqbroker
  rmqconsole:
    image: styletang/rocketmq-console-ng:1.0.0
    container_name: rmqconsole_cp
    privileged: true
    ports:
      - 9002:8080
    environment:
      JAVA_OPTS: "-Xms128m -Xmx128m -Xmn64m -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    depends_on:
      - namesrv
      - broker
    networks:
      rmq:
        aliases:
          - rmqconsole
networks:
  rmq:
    name: rmq
    driver: bridge

启动运行ok

访问图形化界面ok

问题注意

如果控制台界面的cluster里没有broker信息

说明broker没有注册到nameserver上,去看容器broker的日志,

要么容器没有启动成功,

要么容器配置的nameserver错误,

或者docker网络配置错误,导致broker和nameserver没在同一个网络环境下

org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <127.0.0.1:10911> failed

当图形化界面报错如上,

可能是图形化界面没有连接上nameserver

或者是broker的ip配置错误,官网上的broker.conf 中brokerIP1=127.0.0.1并不是所有地方正确

如果是本地测试,则是部署机的ip地址,如果是服务器,这是服务器的公网ip

相关推荐
我叫张土豆43 分钟前
V100 显卡部署 Qwen3-ASR-1.7B 语音识别模型(vLLM + Docker 完整教程)
docker·语音识别·vllm
真上帝的左手1 小时前
11. 容器化 vs 虚拟化-K8s-工作负载实战
云原生·容器·kubernetes
极客先躯2 小时前
高级java每日一道面试题-2026年01月18日-实战篇[Docker]-如何清理仓库中的旧镜像?
java·运维·docker·容器
真香号4 小时前
记一次生产RocketMQ消息积压消费慢的排查与解决
数据库·rocketmq·java-rocketmq
木雷坞5 小时前
Docker Hub、GHCR、Quay 混在一起后,镜像源要分开测
运维·docker
qq_452396235 小时前
第十五篇:《Docker 与 Kubernetes 集成:从 Swarm 到 K8s 的迁移》
docker·容器·kubernetes
HackTwoHub5 小时前
K8s综合渗透测试工具,集成信息搜集、权限逃逸、横向移动,一站式搞定全流程渗透测试工作
人工智能·安全·web安全·云原生·容器·kubernetes·系统安全
人工智能培训5 小时前
数字孪生建模常用方式有哪些?
人工智能·深度学习·机器学习·容器·知识图谱
lpfasd1235 小时前
docker中默认网络的作用和注意事项
网络·docker·容器
IT策士6 小时前
第 37 篇 k8s之调度进阶:亲和性、污点与容忍
云原生·容器·kubernetes