一、前言
最近在做一些关于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
六、启动容器
文章来源:https://www.toymoban.com/news/detail-493786.html
docker-compose -f docker-compose.yml up -d
查看容器状态
访问localhost:8080
文章来源地址https://www.toymoban.com/news/detail-493786.html
到了这里,关于arm版mac使用docker部署rocketMQ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!