背景

由于 mac 电脑,M1芯片下面安装的linux版本和大多数的linux有些许区别,所以在下载rocketmq镜像时候会报错。
WARNING: The requested image's platform (linux/amd64) does not match

所以需要下载支持 arm64v8 版本,但是在dockerhub上面没有,查询了很多的资料,最后终于找到了 M1芯片下面能使用的 rocketmq镜像

参考文章 https://blog.csdn.net/xiaolixi199311/article/details/131612079

下载rocketmq镜像

git clone https://github.com/apache/rocketmq-docker.git
查看下载最新的镜像版本地址:https://archive.apache.org/dist/rocketmq/
在这里插入图片描述
我这里是 5.1.3 版本

下载镜像之后,进入rocketmq-docker文件夹
在这里插入图片描述

执行命令,注意这里的alpine 要改成centos,M1上 alpine会失败

cd image-build
sh build-image.sh 5.1.3 centos

查看下载镜像版本(时间可能有些长)
在这里插入图片描述

下载rocketmq-console-ng镜像

参考文章 https://www.jianshu.com/p/6ad529a16677

也可以直接下载别人编译好的镜像

docker pull candice0630/rocketmq-console-ng:2.0

在这里插入图片描述

编辑 broker.conf 文件和 docker-compose.yml 文件

创建一个文件夹 /myData/rocketmq/conf ,然后编辑 broker.conf文件,修改 brokerIP1 改成自己的ip地址

# 所属集群名称,如果节点较多可以配置多个
terName = 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地址  这里写自己服务器
brokerIP1 = 192.168.156.130

#剩余磁盘比例
diskMaxUsedSpaceRatio=99

在文件根目录创建docker-compose.yml文件在这里插入图片描述

修改 image镜像版本 ,修改volumes 挂载地址的路径,修改 rmqconsole 镜像版本

version: '3' #按照自己版本来
services:
  rmqnamesrv:
    image: apache/rocketmq:5.1.3  #选择自己下载的镜像名
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - /myData/rocketmq/data/namesrv/logs:/opt/logs
      - /myData/rocketmq/data/namesrv/store:/opt/store
    command: sh mqnamesrv #注意:1. 是mqnamesrv而不是rmqnamesrv 2. 前面必须加sh
    networks:
      rmq:
        aliases:
          - rmqnamesrv
  rmqbroker:
    image: apache/rocketmq:5.1.3 #选择自己下载的镜像名
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
    volumes:
      - /myData/rocketmq/data/broker/logs:/opt/logs
      - /myData/rocketmq/data/broker/store:/opt/store
      - /myData/rocketmq/conf/broker.conf:/opt/rocketmq-5.1.3/conf/broker.conf #选择自己下的版本:4.4.0
    environment:
      NAMESRV_ADDR: "rmqnamesrv:9876"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
    command: sh mqbroker -c /opt/rocketmq-5.1.3/conf/broker.conf #注意:1. 是mqbroker而不是rmqbroker 2. 前面必须加sh
    depends_on:
      - rmqnamesrv
    networks:
      rmq:
        aliases:
          - rmqbroker

  rmqconsole:
    image: candice0630/rocketmq-console-ng:2.0  #选择自己下载的镜像名
    container_name: rmqconsole
    ports:
      - 8080:8080
    environment:
      JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    depends_on:
      - rmqnamesrv
    networks:
      rmq:
        aliases:
          - rmqconsole
networks:
  rmq:
    name: rmq
    driver: bridge

启动镜像

执行命令

docker-compose -f docker-compose.yml up -d

查看镜像 docker ps 状态成功
在这里插入图片描述

测试

访问: http://192.168.156.130:8080
能看到控制台的界面,但是有报错信息:
在这里插入图片描述

查看控制台镜像的日志 docker logs rmqconsole 发现配置文件多了一个空格
在这里插入图片描述

修改 broker.conf 文件中的ip 后面的空格,重启 rmqbroker,查看集群列表,服务就启动正常了
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐