Contents

macOS 环境下 Docker 配置 RocketMQ(ARM 架构可用)

Contents

一、创建相关文件夹

 mkdir -p ~/docker/rocketmq/data
 cd ~/docker/rocketmq/data
 mkdir logs
 mkdir store
 mkdir -p broker/conf
 mkdir -p broker/logs
 mkdir -p broker/store

二、创建 docker-compose.yml

vim ~/docker/rocketmq/data/broker/conf/broker.conf

version: "3.5"
services:
  rmqnamesrv:
    image: foxiswho/rocketmq:server
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - ./data/logs:/opt/logs
      - ./data/store:/opt/store
    networks:
      rmq:
        aliases:
          - rmqnamesrv
  rmqbroker:
    image: foxiswho/rocketmq:broker
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
    volumes:
      - ./data/broker/logs:/opt/logs
      - ./data/broker/store:/opt/store
      - ./data/broker/conf/broker.conf:/etc/rocketmq/broker.conf
    environment:
      NAMESRV_ADDR: "rmqnamesrv:9876"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
    command: mqbroker -c /etc/rocketmq/broker.conf
    depends_on:
      - rmqnamesrv
    networks:
      rmq:
        aliases:
          - rmqbroker
  rmqconsole:
    image: apacherocketmq/rocketmq-dashboard
    container_name: rmq-dashboard
    ports:
      - 8180:8080
    environment:
      JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876"
    depends_on:
      - rmqnamesrv
    networks:
      rmq:
        aliases:
          - rmq-dashboard
networks:
  rmq:
    name: rmq
    driver: bridge

三、创建 broker.conf

vim ~/docker/rocketmq/data/broker/conf/broker.conf

brokerClusterName = DefaultCluster
#broker名称,master 和 slave 使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示 Master,大于 0 表示不同的 slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示 Master 和 Slave 之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH 表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功
状态,ASYNC_FLUSH 不需要;
flushDiskType = ASYNC_FLUSH
# 设置 broker 节点所在服务器的 ip 地址、物理 ip,不能用127.0.0.1、localhost、docker内网ip
brokerIP1 = 192.168.123.163
listenPort=10911
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
mapedFileSizeComitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
maxMessageSize=65536m

最后目录结构

docker
└── rocketmq
    ├── data
    │   ├── broker
    │   │   ├── conf
    │   │   │   └── broker.conf
    │   │   ├── logs
    │   │   └── store
    │   ├── logs
    │   └── store
    └── docker-compose.yml

8 directories, 2 files