出于学习的目的(瞎折腾)。想使用 Docker 部署一下 xxl-job。并使用外部配置文件,方便后续更新。使用宿主机已经安装好的 Mysql。

1. 拉取 xxl- job 源码

git clone https://gitee.com/xuxueli0323/xxl-job.git

2. 使用IDEA打开,打包

3. 复制 jar 包、配置文件、Dockerfile 到 xxl-job 目录下

4. 修改 Dockerfile

FROM openjdk:8-jre-slim
MAINTAINER xuxueli

ENV PARAMS=""

# 设置外部配置文件路径(必须,否则无法加载到此配置文件)
ENV JAVA_OPTS="-Dspring.config.location=/xxl-job/application.properties"

# 复制配置文件到容器中
COPY ./application.properties /xxl-job/application.properties
COPY ./logback.xml /xxl-job/logback.xml

ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ADD xxl-job-admin-*.jar /xxl-job/app.jar

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xxl-job/app.jar $PARAMS"]

5. 配置连接宿主机数据库

5.1 先找到宿主机IP

       主要修改数据库连接信息。宿主机在与容器同一局域网,所以需要先找到宿主机此局域网的 ip。ifconfig 命令找到 docker0 网卡信息,IP为 172.18.0.1

5.2  修改 application.properties 中的数据库连接信息

### web
server.port=8080
server.servlet.context-path=/xxl-job-admin

### actuator
management.server.servlet.context-path=/actuator
management.health.mail.enabled=false

### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/

### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########

### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
#mybatis.type-aliases-package=com.xxl.job.admin.core.model

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://172.18.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000

### xxl-job, email
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=184248697@qq.com
spring.mail.from=184248697@qq.com
spring.mail.password=roxdezsngxuvbjii
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

### xxl-job, access token
xxl.job.accessToken=default_token

### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN

## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

### xxl-job, log retention days
xxl.job.logretentiondays=30

6. 构建镜像

docker build -t xxl-job-admin .

7. 运行容器

docker run -d -p 8181:8080 xxl-job-admin

8. 访问

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐