docker部署xxl-job(含镜像打包)
docker部署xxl-job比较简单,xxl-job已经给出了dockerfile,我们只需要打包一下镜像,再运行就行了。
需要注意的是,
- 国内访问github下载源码可能不太通畅,因此改成了从gitcode下载。
- 国内访问dockerhub可能不太通畅,所以基础镜像地址改成了daocloud提供的代理地址,感谢大善人daocloud。
直接使用官方镜像
官方提供了镜像,在dockerhub上,地址是 xuxueli/xxl-job-admin
比如最新版本是 docker pull xuxueli/xxl-job-admin:2.4.2
唯一的问题是dockerhub可能不方便访问,如果不方便,参考下文的打包镜像
打包镜像
下载源码
git clone https://gitcode.com/xuxueli0323/xxl-job.git
切换到指定版本
建议,默认下载到的是master分支,存在开发中代码,最好切换到最近一次的稳定发布代码
git checkout 2.4.2
编译
mvn clean package
编译以后,可执行jar包在xxl-job-admin/target
目录下:
root@xiaochao:~/xxl-job/xxl-job# ll xxl-job-admin/target/
...
-rw-r--r-- 1 root root 41062212 Nov 27 02:51 xxl-job-admin-2.4.2.jar
-rw-r--r-- 1 root root 528362 Nov 27 02:50 xxl-job-admin-2.4.2-javadoc.jar
-rw-r--r-- 1 root root 1895421 Nov 27 02:50 xxl-job-admin-2.4.2-sources.jar
...
只有xxl-job-admin-2.4.2.jar
是可执行jar包。
打包docker
在根目录执行新建脚本build.sh
#!/bin/bash
set -ex
XXL_VERSION=$(cat pom.xml | grep '<version>' | head -n 1 | awk -F '[><]' '{print $3}')
mvn clean package
# 移除非可执行jar包
rm -rf xxl-job-admin/target/xxl-job-admin-$XXL_VERSION-*.jar
# 国内下载不动dockerhub的镜像,改为daocloud代理
cp xxl-job-admin/Dockerfile xxl-job-admin/Dockerfile_new -f
sed -i 's|openjdk|m.daocloud.io/docker.io/library/openjdk|g' xxl-job-admin/Dockerfile_new
docker build -t xxl-job-admin:$XXL_VERSION -f xxl-job-admin/Dockerfile_new xxl-job-admin
执行 chmod 700 build.sh && ./build.sh
打包后结果:
root@xiaochao:~/xxl-job/xxl-job# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xxl-job-admin 2.4.2 5375e8576f32 7 seconds ago 236MB
部署xxl-job
准备数据库
准备一个mysql数据库,执行xxl-job初始化脚本。
初始化脚本是 下载下来源码的 doc/db/tables_xxl_job.sql
启动xxl-job
编写脚本 start_xxl-job.sh
#!/bin/bash
set -e
service_id="$(docker ps -a| grep xxl-job| awk -F " " '{print $1}')"
if [ ! -z "$service_id" ]
then
docker kill $service_id
docker rm $service_id
fi
docker run \
--name xxl-job \
-p 8080:8080 \
-e SPRING_DATASOURCE_URL='jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai' \
-e SPRING_DATASOURCE_USERNAME='xxx' \
-e SPRING_DATASOURCE_PASSWORD='xxx' \
-e PARAMS='--xxl.job.accessToken=复杂token' \
-d \
xxl-job-admin:2.4.2
其中 XXL_JOB_ACCESS-TOKEN 是后面程序访问xxl-job要用的
其他可配置内容参考 xxl-job 配置部署“调度中心”
在脚本里面加-e 环境变量就行
数据库密码啥的改成自己的