构建 XXL-JOB ARM 架构的 Docker 镜像,以满足适配国产化项目的需求

2.1 保证系统环境有java

2.2 安装 Maven

下载解压即用版的 Maven

wget https://dlcdn.apache.org/maven/maven-3/3.8.9/binaries/apache-maven-3.8.9-bin.tar.gz -P ~/tools/src/

解压软件包

tar xvf ~/tools/src/apache-maven-3.8.8-bin.tar.gz -C ~/tools/

配置环境变量

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

# Maven

export MAVEN_HOME=~/tools/apache-maven-3.8.8

export PATH=$PATH:${MAVEN_HOME}/bin

查看 Maven 版本,验证是否安装成功

$ 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"

3. 编译 XXL-JOB Jar 包

3.1 下载 XXL-JOB 源码包

git clone https:///github.com/xuxueli/xxl-job.git

建议去下2.4的版本,最新版本对JAVA版本要求是11

3.2 编译构建 jar 包

cd /xxl-job

mvn clean package -Dmaven.test.skip=true

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

[INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary for xxl-job 2.4.2:

[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 包

$ 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 镜像。

cd xxl-job-admin

docker build -t kelong/xxl-job-admin_arm:2.4.2 .

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

$ docker build -t kelong/xxl-job-admin:2.4.2 .

[+] 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/kelong/xxl-job-admin:2.4.2                                                                                                    0.0s

4.2 验证镜像架构

$ docker inspect kelong/xxl-job-admin:2.4.2 | grep "Architecture"

        "Architecture": "arm64",

4.3 导入初始xxl_job表

表路径:xxl-job-2.4.2/doc/db/tables_xxl_job.sql

4.4 docker-compose配置启动

services:

  xxl-job-admin:

    restart: always

    image: kelong/xxl-job-admin_arm:2.4.2

    container_name: xxl-job-admin

    volumes:

      - /software/xxl-job-admin/logs:/data/applogs

    ports:

      - 8800:8800

    environment:

      # 设置启动参数

      PARAMS: '

      --server.port=8800

      --server.servlet.context-path=/xxl-job-admin

      --spring.datasource.url=jdbc:mysql://192.168.x.30:3306/xxl_job?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false

      --spring.datasource.username=xxl

      --spring.datasource.password=sj@123123

      #--spring.mail.host=smtp.qq.com

      #--spring.mail.port=465

      #--spring.mail.username=test_mail@qq.com

      #--spring.mail.from=test_mail@qq.com

      #--spring.mail.password=password123456

      #--spring.mail.properties.mail.smtp.starttls.enable=true

      #--spring.mail.properties.mail.smtp.starttls.required=true

      --xxl.job.accessToken=Lpoms_xxljob_default_token'

启动

docker-compose up -d

4.5  网页登陆

http://192.168.x.30:8800/xxl-job-admin/    默认账号密码admin/123456 登陆及时更改

更多推荐