1. 启动临时容器把容器内原始配置拷贝到宿主机

docker run --rm apache/rocketmq:4.7.1 cat /home/rocketmq/rocketmq-4.7.1/conf/broker.conf > ./rmqdata/broker/conf/broker.conf

docker run --rm apache/rocketmq:4.7.1 cat /home/rocketmq/rocketmq-4.7.1/conf/plain_acl.yml > ./rmqdata/broker/conf/plain_acl.yml

docker run --rm apache/rocketmq:4.7.1 cat /home/rocketmq/rocketmq-4.7.1/conf/tools.yml > ./rmqdata/broker/conf/tools.yml

2. 验证是否是文件(重点,防止再次变成目录)

ls -l ./rmqdata/broker/conf/broker.conf

chmod -R 777 ./rmqdata

3. 配置文件

/data/rmqdata/
├── broker
    └── conf/broker.conf
    └── conf/plain_acl.yml
    └── conf/tools.yml
├── namesrv
└── rocketmq-dashboard-data
    └── users.properties

conf/broker.conf

namesrvAddr=namesrv:9876
brokerIP1=192.168.16.2
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0

# Topic默认队列数量,生产建议16~32;队列越多并行消费能力越强
defaultTopicQueueNums=16

# 自动创建Topic(生产环境建议关闭 false!)
autoCreateTopicEnable=true
# 自动创建消费组(生产环境建议关闭 false!)
autoCreateSubscriptionGroup=true

# 消息文件删除时机,04=凌晨4点执行过期文件清理
deleteWhen = 04
# 消息文件保留时长,单位小时;48=保留2天
fileReservedTime = 48

# 节点角色:ASYNC_MASTER(异步主) / SYNC_MASTER(同步主) / SLAVE(从节点)
# ASYNC_MASTER:主写完立刻返回客户端,异步同步给从,性能更高;丢失风险略高
# SYNC_MASTER:主从同步完成再返回,数据更安全,性能偏低
brokerRole = ASYNC_MASTER

# 刷盘策略
# ASYNC_FLUSH 异步刷盘:消息写入pagecache就返回,后台定时落盘,性能高
# SYNC_FLUSH 同步刷盘:消息必须持久化磁盘才返回,可靠性高、性能差
flushDiskType = ASYNC_FLUSH

# 磁盘占用阈值,百分比;磁盘使用率超过99%,Broker拒绝接收新消息
diskMaxUsedSpaceRatio=99

# ====================== 下面全部是消息存储路径 ======================
# 存储根目录
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

# 单条消息最大字节 65536 = 64KB;超大消息场景需要调高
maxMessageSize=65536

users.properties

# 管理员账号
admin=Rocket@123,1
# 可新增多个普通用户
dev=dev123,0

docker-compose.yml

networks:
  1panel-network:
    external: true

services:
  namesrv:
    command: sh mqnamesrv
    container_name: rmq-471-rmqnamesrv
    image: apache/rocketmq:4.7.1
    environment:
      - JAVA_OPT=-Xms128m -Xmx128m
    networks:
      - 1panel-network
    ports:
      - "9876:9876"
    volumes:
      - ./rmqdata/namesrv/logs:/home/rocketmq/logs
    restart: always

  broker:
    command: sh mqbroker -c /home/rocketmq/rocketmq-4.7.1/conf/broker.conf
    container_name: rmq-471-rmqbroker
    environment:
      - JAVA_OPT=-Xms256m -Xmx256m
    image: apache/rocketmq:4.7.1
    depends_on:
      - namesrv
    networks:
      - 1panel-network
    ports:
      - "10909:10909"
      - "10911:10911"
      - "10912:10912"
    volumes:
      - ./rmqdata/broker/logs:/home/rocketmq/logs
      - ./rmqdata/broker/store:/home/rocketmq/store
      - ./rmqdata/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.7.1/conf/broker.conf
      - ./rmqdata/broker/conf/plain_acl.yml:/home/rocketmq/rocketmq-4.7.1/conf/plain_acl.yml
      - ./rmqdata/broker/conf/tools.yml:/home/rocketmq/rocketmq-4.7.1/conf/tools.yml
    restart: always

  dashboard:
    container_name: rmq-471-rmqdashboard
    depends_on:
      - namesrv
      - broker
    environment:
      - JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Drocketmq.config.timeoutMillis=8000 -Drocketmq.config.loginRequired=true -Drocketmq.config.dataPath=/tmp/rocketmq-console/data
    image: apacherocketmq/rocketmq-dashboard:latest
    networks:
      - 1panel-network
    ports:
      - "8088:8082"
    volumes:
      # 挂载用户配置持久化目录
      - ./rmqdata/rocketmq-dashboard-data:/tmp/rocketmq-console/data
    restart: always
docker compose up -d

更多推荐