Mac M1芯片,aarch64版本linux docker环境部署RocketMQ
mac M1芯片,linux aarch64版本,docker环境部署rocketmq
背景
由于 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,查看集群列表,服务就启动正常了
更多推荐
所有评论(0)