前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 最佳实战:Docker 构建 XXL-JOB ARM 架构镜像

Docker 最佳实战:Docker 构建 XXL-JOB ARM 架构镜像

原创
作者头像
运维有术
发布2024-05-15 18:15:40
1730
发布2024-05-15 18:15:40
举报
文章被收录于专栏:运维有术运维有术

Docker 最佳实战:Docker 构建 XXL-JOB ARM 架构镜像

2024 年云原生运维实战文档 99 篇原创计划 第 020 篇 |Docker 最佳实战「2024」系列 第 012 篇

你好,欢迎来到运维有术

今天分享的内容是 Docker 最佳实战「2024」 系列文档中的 Docker 构建 XXL-JOB ARM 架构镜像

分布式任务调度平台 XXL-JOB 在 DockerHub 上只提供了 amd64 架构的镜像,没有 ARM 架构的。

dockerhub-xxl-job-admin
dockerhub-xxl-job-admin

本文将详细介绍如何在 Mac 电脑上自己构建 XXL-JOB ARM 架构的 Docker 镜像,以满足适配国产化项目的需求。

1. 前置条件

本文适用于 M1 芯片 以上,任何型号的 Mac 电脑,我用的是 M1 芯片的 Mac Mini。

如果是非 Mac 设备的 ARM 芯片的 Linux 服务器,Java 安装包需要换成 Linux 版本的。 其他的操作流程和方式基本一致。

本文没有采用 Docker 的多阶段构建方式,而是采用了在自己电脑安装编译环境的构建方式。

构建环境:

  • Maven3+(3.8.8
  • Jdk1.8+(jdk-8u411
  • Mysql8.0+(只打包不需要

源码包及构建工具安装路径(请根据实际情况调整):

  • 源码包存放路径: ~/tools/src
  • 构建工具安装路径: ~/tools/
  • XXL-JOB 源码包: ~/code/gitee/

2. 安装编译工具

2.1 安装 Java 1.8

  1. 下载解压即用版的 Java

macOS Java 8 下载地址 下载 Java 安装包 jdk-8u411-macosx-aarch64.tar.gz

  1. 解压软件包
代码语言:bash
复制
tar xvf ~/tools/src/jdk-8u411-macosx-aarch64.tar.gz -C ~/tools/
  1. 配置环境变量

编辑环境变量配置文件,vi ~/.zshrc,在文件末尾加入以下内容:

代码语言:bash
复制
# Java
export JAVA_HOME=~/tools/jdk1.8.0_411.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
  1. 查看 Java 版本,验证是否安装成功
代码语言:bash
复制
source ~/.zshrc
$ java -version
java version "1.8.0_411"
Java(TM) SE Runtime Environment (build 1.8.0_411-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.411-b09, mixed mode)

2.2 安装 Maven

  1. 下载解压即用版的 Maven
代码语言:bash
复制
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz -P ~/tools/src/
  1. 解压软件包
代码语言:bash
复制
tar xvf ~/tools/src/apache-maven-3.8.8-bin.tar.gz -C ~/tools/
  1. 配置环境变量

编辑环境变量配置文件,vi ~/.zshrc,在文件末尾加入以下内容:

代码语言:bash
复制
# Maven
export MAVEN_HOME=~/tools/apache-maven-3.8.8
export PATH=$PATH:${MAVEN_HOME}/bin
  1. 查看 Maven 版本,验证是否安装成功
代码语言:bash
复制
source ~/.zshrc
$ mvn -version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /Users/opsxlab/tools/apache-maven-3.8.8
Java version: 1.8.0_411, vendor: Oracle Corporation, runtime: /Users/opsxlab/tools/jdk1.8.0_411.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "14.5", arch: "aarch64", family: "mac"
  1. 添加阿里云的 maven 仓库(可选

添加阿里云的 maven 仓库,是为了加快 Jar 依赖包的下载速度和成功率,你可以根据网络情况参考配置。

编辑 maven 的配置文件 settings.xmlvi ~/tools/apache-maven-3.8.8/conf/settings.xml

<mirrors></mirrors> 标签中添加 mirror 子节点:

代码语言:xml
复制
<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

3. 编译 XXL-JOB Jar 包

3.1 下载 XXL-JOB 源码包

代码语言:bash
复制
cd ~/code/gitee
git clone http://gitee.com/xuxueli0323/xxl-job

3.2 编译构建 jar 包

本文基于 tag v2.2.0 编译构建 jar 包,你可以根据需求选择相应的代码分支或是 tag。

代码语言:bash
复制
cd ~/code/gitee/xxl-job
git checkout v2.2.0
mvn clean package -Dmaven.test.skip=true

正确执行后,输出结果如下 :

代码语言:bash
复制
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for xxl-job 2.2.0:
[INFO]
[INFO] xxl-job ............................................ SUCCESS [  0.055 s]
[INFO] xxl-job-core ....................................... SUCCESS [  1.113 s]
[INFO] xxl-job-admin ...................................... SUCCESS [  1.631 s]
[INFO] xxl-job-executor-samples ........................... SUCCESS [  0.001 s]
[INFO] xxl-job-executor-sample-frameless .................. SUCCESS [  0.057 s]
[INFO] xxl-job-executor-sample-springboot ................. SUCCESS [  0.145 s]
[INFO] xxl-job-executor-sample-spring ..................... SUCCESS [  0.608 s]
[INFO] xxl-job-executor-sample-jfinal ..................... SUCCESS [  0.697 s]
[INFO] xxl-job-executor-sample-nutz ....................... SUCCESS [  0.658 s]
[INFO] xxl-job-executor-sample-jboot ...................... SUCCESS [  0.299 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.377 s
[INFO] Finished at: 2024-05-15T15:00:45+08:00
[INFO] ------------------------------------------------------------------------

说明: 上面的输出结果是第二次编译的结果,第一次会下载很多 jar 依赖包,耗时依赖网络。

3.3 查看成功编译的 jar 包

代码语言:bash
复制
$ ls xxl-job-admin/target
classes                          maven-archiver                   xxl-job-admin-2.2.0.jar
generated-sources                maven-status                     xxl-job-admin-2.2.0.jar.original

4. 构建 XXL-JOB Docker 镜像

4.1 构建 Docker 镜像

Docker 镜像的 tag 命名规则跟 xxl-job 官方保持一致,但是使用了 opsxlab 的前缀,请你根据实际情况修改。

XXL-JOB 源码中自带 Dockerfile,直接使用 Maven 构建出的 jar 包,执行下面的命令,构建 Docker 镜像。

代码语言:bash
复制
cd xxl-job-admin
docker build -t opsxlab/xxl-job-admin:2.2.0 .

正确执行后,输出结果如下 :

代码语言:bash
复制
$ docker build -t opsxlab/xxl-job-admin:2.2.0 .
[+] Building 16.8s (9/9) FINISHED                                                                                                         docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                      0.0s
 => => transferring dockerfile: 329B                                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/openjdk:8-jre-slim                                                                                    16.3s
 => [auth] library/openjdk:pull token for registry-1.docker.io                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                           0.0s
 => [1/3] FROM docker.io/library/openjdk:8-jre-slim@sha256:53186129237fbb8bc0a12dd36da6761f4c7a2a20233c20d4eb0d497e4045a4f5                               0.0s
 => [internal] load build context                                                                                                                         0.3s
 => => transferring context: 39.03MB                                                                                                                      0.3s
 => CACHED [2/3] RUN ln -snf /usr/share/zoneinfo/PRC /etc/localtime && echo PRC > /etc/timezone                                                           0.0s
 => [3/3] ADD target/xxl-job-admin-*.jar /app.jar                                                                                                         0.1s
 => exporting to image                                                                                                                                    0.1s
 => => exporting layers                                                                                                                                   0.1s
 => => writing image sha256:b76aeccf6a21a77b3890a9e9156edcbebe41d1e2872086e2b536cb873a537f1d                                                              0.0s
 => => naming to docker.io/opsxlab/xxl-job-admin:2.2.0                                                                                                    0.0s

4.2 验证镜像架构

代码语言:bash
复制
$ docker inspect opsxlab/xxl-job-admin:2.2.0 | grep "Architecture"
        "Architecture": "arm64",

4.3 推送到自己的镜像仓库

代码语言:bash
复制
docker push opsxlab/xxl-job-admin:2.2.0
opsxlab-xxl-job-admin
opsxlab-xxl-job-admin

4.4 部署验证

部署验证需要搭建数据库,本文略,请自行完成测试。

以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒

如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!

免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

版权声明

  • 所有内容均属于原创,感谢阅读、收藏,转载请联系授权,未经授权不得转载

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 最佳实战:Docker 构建 XXL-JOB ARM 架构镜像
    • 1. 前置条件
      • 2. 安装编译工具
        • 2.1 安装 Java 1.8
        • 2.2 安装 Maven
      • 3. 编译 XXL-JOB Jar 包
        • 3.1 下载 XXL-JOB 源码包
        • 3.2 编译构建 jar 包
        • 3.3 查看成功编译的 jar 包
      • 4. 构建 XXL-JOB Docker 镜像
        • 4.1 构建 Docker 镜像
        • 4.2 验证镜像架构
        • 4.3 推送到自己的镜像仓库
        • 4.4 部署验证
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档