docker中安装xxl-admin 和 xxl-job
配置 xxl-admin 和 xxl-job
- xxl-admin 配置 端口 DataSource 邮箱等
- xxl-job 配置端口 和 admin管理后台的地址
xxl.job.admin.addresses=http://admin-host:admin-port/xxl-job-admin
- 注意配置 logback.xml 里面的 log 地址为可写地址
- 打成 jar 包上传到服务器
dockerfile 编写
xxl-admin
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD job-admin.jar job-admin.jar
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /job-admin.jar
xxl-exec
FROM openjdk:8-jdk-alpine
# 这里安装的是一个 PHP 的执行器
RUN apk add php7 php7-pdo_mysql php7-opcache php7-curl php7-gd php7-mbstring php7-mysqli php7-json php7-dom php7-xml php7-xsl php7-zip php7-bcmath php7-redis php7-pdo php-simplexml php-ctype php7-iconv php7-xmlwriter php7-xmlreader bash
VOLUME /tmp
ADD job-exec.jar job-exec.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/job-exec.jar"]
docker network
因为 xxl-admin 和 xxl-job 被我分别放在两个容器里, 他们之间要通信需要建立一个网络, 这里用桥接的方式帮他们建立在一个内网中
命令如下
docker network create xxlJobNetwork
# 看下刚刚建立的网络
docker network ls
# 8a24dbb0b35f xxlJobNetwork bridge local
拿到 xxlJobNetwork 网络的名称在下一步 docker run 的时候带入 --network 参数中
docker image生成和容器启动
-
在 admin 目录输入
docker build -t job-admin:v1 .
成功后获取到对应的 image id -
启动admin管理后台
docker run -d --name job-admin --network xxlJobNetwork -p 9091:9091 imageId
注意jar包里面配置的端口和容器端口暴露的端口要一致 -
到执行器 jar 包目录 输入
docker build -t job-exex:v1 .
然后获取到对应的 imageId -
启动调度器
docker run -d --name job-admin --network xxlJobNetwork -v 外部挂载路径:/projects(容器内部项目地址) -p 9092:9092 imageId
表结构
按git 项目中给的数据文件执行一次
后续
如果出现调度中心注册不到执行器地址 可以进入容器 cat 容器中的日志
#进入 job-exec 容器
docker exec -it containerId /bin/sh