Docker部署RocketMQ(4.9.4)官方镜像和控制台windows、mac、linux全平台通用

准备工作

在你想要的地方创建文件夹,在该文件夹下打开Terminal,以下命令会构造该相对路径。
mac 和 linux 运行下列命令

mkdir -p ./data/namesrv/logs
mkdir -p ./data/broker1/conf
mkdir -p ./data/broker1/logs
mkdir -p ./data/broker1/store

windows运行以下命令才会创建相对路径,否则会直接在磁盘根目录下创建。

mkdir  ./data/namesrv/logs
mkdir  ./data/broker1/conf
mkdir  ./data/broker1/logs
mkdir  ./data/broker1/store

编辑Broker配置文件

在上述创建的data/broker1/conf文件夹下创建broker.conf,内容如下,修改brokerIP1即可。

# mq集群名称
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-master
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 24
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
#设置broker节点所在服务器的ip地址(公网IP)
#liux、mac系统使用ifconfig,win系统用ipconfig查主机ip
brokerIP1 = 本机ip

编写docker-compose.xml(修改volumes)

windows下的文件内容为,需要写绝对路径,否则会报错。

services:
 
  namesrv:
 
    image: apache/rocketmq:4.9.4
 
    container_name: rmqnamesrv
 
    ports:
 
      - 9876:9876
 
    volumes:
 
      - D:/Temp/mq_path/data/namesrv/logs:/home/rocketmq/logs
 
    command: sh mqnamesrv
 
  broker:
 
    image: apache/rocketmq:4.9.4
 
    container_name: rmqbroker
 
    ports:
 
      - 10909:10909
 
      - 10911:10911
 
      - 10912:10912
 
    volumes:
 
      - D:/Temp/mq_path/data/broker/logs:/home/rocketmq/logs
 
      - D:/Temp/mq_path/data/broker/store:/home/rocketmq/store
 
      - D:/Temp/mq_path/data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
 
    environment:
 
      NAMESRV_ADDR: "namesrv:9876"
 
      JAVA_OPTS: " -Duser.home=/opt"
 
      JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
 
    command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
 
    depends_on:
 
      - namesrv
 
  rmqconsole:
 
    image: styletang/rocketmq-console-ng
 
    container_name: rmqconsole
 
    ports:
 
      - 18080:8080
 
    environment:
 
        JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
 
    depends_on:
 
      - namesrv        

mac和linux使用的docker-compose.xml如下,此时可以使用相对路径。

services:
 
  namesrv:
 
    image: apache/rocketmq:4.9.4
 
    container_name: rmqnamesrv
 
    ports:
 
      - 9876:9876
 
    volumes:
 
      - ./data/namesrv/logs:/home/rocketmq/logs
 
    command: sh mqnamesrv
 
  broker:
 
    image: apache/rocketmq:4.9.4
 
    container_name: rmqbroker
 
    ports:
 
      - 10909:10909
 
      - 10911:10911
 
      - 10912:10912
 
    volumes:
 
      - ./data/broker1/logs:/home/rocketmq/logs
 
      - ./data/broker1/store:/home/rocketmq/store
 
      - ./data/broker1/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
 
    environment:
 
      NAMESRV_ADDR: "namesrv:9876"
 
      JAVA_OPTS: " -Duser.home=/opt"
 
      JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
 
    command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
 
    depends_on:
 
      - namesrv
 
  rmqconsole:
 
    image: styletang/rocketmq-console-ng
 
    container_name: rmqconsole
 
    ports:
 
      - 18080:8080
 
    environment:
 
        JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
 
    depends_on:
 
      - namesrv        

对于Mac和linux创建日志还需要有写权限,因此需要执行下列命令。

chmod -R 777./data

执行docker-compose安装命令

docker-compose up -d

FAQ:

如需打开防火墙,请参考文章[1]。
参考文章:
[1] docker-compose 安装 RocketMQ 4.9.X (apache官方镜像) namesrv broker 与可视化控制台 console_疯狂的狮子Li的博客-CSDN博客_rocketmq 官方镜像

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容