arm版mac使用docker部署rocketMQ

一、前言

最近在做一些关于rocketMQ社区工作。由于需要测试多个版本的兼容性,公司开发环境只有一个版本集群,于是想使用docker部署测试。官方并没有提供arm版本的镜像,docker hub上下载了几个都有问题。
索性rockeMQ社区提供多个边缘组件,其中有单独的项目用于编译镜像。于是自己琢磨琢磨重新编译镜像。

教程均适用于任何X86和arm 64架构机器

二、相关组件

rockertMQ部署使用三个组件

  • nameServer 负责管理broker节点和console交互数据
  • broker 数据存储节点
  • dashboard 控制台用于管理集群

其中nameServer和broker使用同一镜像部署。
dashboard使用单独镜像部署

三、构建rocketMQ镜像

1、拉取代码

git clone https://github.com/apache/rocketmq-docker.git

2、构建镜像

进入image-build目录,执行编译命令

cd image-build
sh build-image.sh 4.8.0 alpine

按需选择自己所需编辑的rockertMQ版本和基础镜像
支持的版本和镜像名见 README.md
编译成功后的镜像
在这里插入图片描述

四、构建dashboard镜像

1、拉取代码

git clone https://github.com/apache/rocketmq-dashboard

2、修改配置(可选)

项目根目录下 application.yml 文件,包含项目各种配置项。

  • application.yml
    删除namesrvAddrs下默认地址。

在这里插入图片描述
如果不删除,即使启动dashboard时指定了namesrv地址,在spring初始化配置文件的时候还是会被覆盖掉,最终连接127.0.0.1:9876。
当然不改默认配置,也可以在dashboard的ops页下手动添加namesrv地址。
看过源码个人认为这边是个实现上的bug,指定值竟然会被配置值覆盖==。那指定值的意义又何在?
在这里插入图片描述

3、编译代码

mvn clean package -Dmaven.test.skip=true

将target目录下生成的jar包复制至src/main/docker目录下

4、构建镜像

进入src/main/docker执行如下编译命令

docker build -t rocketmq-console-ng:2.0 .

生成如下镜像
在这里插入图片描述

五、镜像编排

1、broker.conf

需要使用本地文件覆盖镜像中broker配置文件,指定broker机器ip地址。否则namesrv无法纳管broker机器。
新建broker.conf文件,写入以下内容

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.2.6

brokerIP1需要指定为本机ip,并非容器ip或主机名
mac端执行ifconfig en0
在这里插入图片描述
或者wifi设置页
在这里插入图片描述

2、docker-compose.yml

新建docker-compose.yml文件,写入如下内容

version: '3'
services:
  namesrv:
    image: apache/rocketmq:4.8.0-alpine 
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    command: sh mqnamesrv
  broker:
    image: apache/rocketmq:4.8.0-alpine 
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
 # 使用本地配置文件覆盖broker容器中文件
    volumes:
      - {此处替换为本地broker.conf绝对路径}:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
    command: sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
    depends_on:
      - namesrv
  mqconsole:
    image: rocketmq-console-ng:2.0
    container_name: rmqconsole
    ports:
      - 8080:8080
 # dashboard启动时需要指定连接的namesrv地址,和上面broker配置一样同样是本机ip
    environment:
      JAVA_OPTS: -Drocketmq.config.namesrvAddr=192.168.2.6:9876 -Drocketmq.config.isVIPChannel=false
    depends_on:
      - namesrv

六、启动容器

在这里插入图片描述

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

查看容器状态
在这里插入图片描述
访问localhost:8080
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值