rocketmq5.3.0 arm64 编译并打包docker镜像
创始人
2024-09-26 11:26:51
0

背景

2024.7.22刚爆出来的漏洞 CVE-2024-23321
要求将rocketmq升级到5.3.0
在这里插入图片描述

https://www.cvedetails.com/cve/CVE-2024-23321/?q=CVE-2024-23321

源码下载地址

https://rocketmq.apache.org/download/
在这里插入图片描述

下载基础镜像并升级

基础镜像

考虑到系统架构为arm64,但官方并没有发布对应架构的docker镜像,本次在dockerhub上拉取了一个别人打包的rocketmq:4.9.7作为本次打包的基础镜像(最近连不上dockerhub,拉不下来么的办法)

# 基础镜像中提供了jdk1.8的运行环境,不再需要我们单独创建环境 docker pull dyrnq/rocketmq:4.9.7 

编译源码

教程:https://rocketmq.apache.org/zh/docs/quickStart/01quickstart
编译按照官网给的编译方式在对应服务器上运行即可,本次记录如何准备编译环境

# 需要环境 jdk1.8 maven 

我是直接在宿主机上编译的(容器内下载很慢,不知道为啥),运行系统是银河麒麟,安装包的管理方式是yum,类似centos,但linux原理上大同小异

# 安装openjdk(jdk需要去apache官网登录下载有点麻烦,openjdk一样用) yum install java-1.8.0-openjdk # 安装maven,maven主要是为了编译 yum install maven # 验证安装 java -version mvn -version 

在这里插入图片描述

# 编译命令,记得将5.2.0换成你下载的5.3.0,编译时间很长(亲测吃完饭回来还没编译完,要下一堆东西) unzip rocketmq-all-5.2.0-source-release.zip cd rocketmq-all-5.2.0-source-release/ mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U cd distribution/target/rocketmq-5.2.0/rocketmq-5.2.0 

最后生成的distribution/target/rocketmq-5.2.0/rocketmq-5.2.0就是能在你操作系统中运行的包

打包镜像

镜像操作需要在容器中执行,使用之前下载的4.9.7的镜像创建一个容器

docker run -it  dyrnq/rocketmq:4.9.7 /bin/bash 

容器内工作目录是/opt/rocketmq,把之前编译好的文件使用docker cp命令复制到容器内/home/下,此处有一个权限问题,我在宿主机上的用户是root,而容器内默认用户只有一个rocketmq,复制进去之后的文件权限也是root,无法操作,但在/home/下有个rocketmq的目录权限都是rocketmq的用户和组
在这里插入图片描述
将编译好的rocketmq-5.3.0放到/home/rocketmq下后权限就变了,**原理未知 **
此时把容器内/opt/rocketmq/目录下文件都删除,将/home/rocketmq/rocketmq-5.3.0/下的文件复制到/opt/rocketmq中即可

rm -rf /opt/rocketmq/* cp -r /home/rocketmq/rocketmq-5.3.0/* /opt/rocketmq/ 

退出容器,提交

docker commit 容器id rocketmq:5.3.0-arm64 

注意此时有个问题是镜像内环境变量中mq的版本还是4.9.7,我是重新写了一个Dockerfile设置了一下环境变量,重新提交了一下
在这里插入图片描述
到此,适用于arm64版本的rocketmq-5.3.0打包完成

使用

通过docker-compose创建

version: '3' services: # rocketmq相关   namesrv:     image: rocketmq:5.3.0-arm64     container_name: rocketmq-namesrv     restart: always     mem_limit: "50g"     #volumes:       #- ./namesrv-logs:/home/rocketmq/logs/rocketmqlogs     networks:       - rocketmq     ports:       - 9876:9876     environment:       - TZ=Asia/Shanghai       - MAX_POSSIBLE_HEAP=4096m       #- JAVA_OPT_EXT=-server -Xms64m -Xmx64m -Xmn64m     command: sh mqnamesrv    broker:     image: rocketmq:5.3.0-arm64     container_name: rocketmq-broker     depends_on:       - namesrv     restart: always     mem_limit: "50g"     volumes:       - ./broker.conf:/etc/broker.conf:ro       #- ./broker-logs:/home/rocketmq/logs/rocketmqlogs     networks:       - rocketmq     ports:       - 10909:10909       - 10911:10911     environment:       - TZ=Asia/Shanghai       - NAMESRV_ADDR=namesrv:9876       - MAX_POSSIBLE_HEAP=4096m       #- JAVA_OPT_EXT=-server -Xms64m -Xmx64m -Xmn64m     command: sh mqbroker -c /etc/broker.conf    # # 提供可视化rocketmq页面,可选择部署,不需要页面可不部署   mqconsole:     image: candice0630/rocketmq-console-ng:2.0 #这儿是非apache官方编译的ng镜像,而是从dockerhub上下载的专用于arm64(aarch64)架构的镜像     container_name: rmqconsole     networks:       - rocketmq     ports:       - 19876:8080     environment:       JAVA_OPTS: -Drocketmq.config.namesrvAddr=namesrv:9876 -Drocketmq.config.isVIPChannel=false     depends_on:       - namesrv  

相关内容

热门资讯

指引透视挂!一乐棋牌辅助器(辅... 指引透视挂!一乐棋牌辅助器(辅助)原来一直总是有辅助app(哔哩哔哩)1、游戏颠覆性的策略玩法,独创...
连日来!顺兴茶楼辅助软件!真是... 连日来!顺兴茶楼辅助软件!真是是真的有开挂辅助器(有挂秘笈)-哔哩哔哩顺兴茶楼辅助软件辅助器是一种具...
要领透视挂!钱塘十三水辅助(辅... 要领透视挂!钱塘十三水辅助(辅助)其实存在有辅助攻略(哔哩哔哩)1、首先打开钱塘十三水辅助辅助器下载...
黑科技教程!丽水都莱辅助工具试... 黑科技教程!丽水都莱辅助工具试用!确实是真的有开挂辅助神器(有挂秘籍)-哔哩哔哩1、超多福利:超高返...
妙招透视挂!欢乐联盟游戏辅助(... 妙招透视挂!欢乐联盟游戏辅助(辅助)原来一直都是有辅助工具(哔哩哔哩)欢乐联盟游戏辅助能透视中分为三...
据玩家消息!佛手十三道辅助!总... 据玩家消息!佛手十三道辅助!总是真的是有开挂辅助挂(今日头条)-哔哩哔哩1、金币登录送、破产送、升级...
手册透视挂!闲逸软件可以控制的... 手册透视挂!闲逸软件可以控制的吗(辅助)确实有辅助插件(哔哩哔哩)辅助器是一种具有地方特色的麻将游戏...
黑科技辅助挂!随意玩辅助器视频... 黑科技辅助挂!随意玩辅助器视频!一贯是有开挂辅助技巧(讲解有挂)-哔哩哔哩进入游戏-大厅左侧-新手福...
大纲透视挂!财神辅助模拟器(辅... 大纲透视挂!财神辅助模拟器(辅助)切实一直都是有辅助脚本(哔哩哔哩)1、很好的工具软件,可以解锁游戏...
针对!欢乐达人破解器!切实是真... 针对!欢乐达人破解器!切实是真的有开挂辅助软件(揭秘有挂)-哔哩哔哩一、欢乐达人破解器可以开透视的定...