docker-compose 部署自定义xxl-job
1、通过git拉取项目
git clone https://gitee.com/xuxueli0323/xxl-job.git
2、添加pom依赖
注意:这里只修改xxl-job-admin模块的依赖
<!-- spring cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<!-- nacos client -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${nacos.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${nacos.version}</version>
</dependency>
<!-- springbootadmin监控 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${admin.client.version}</version>
</dependency>
3、bootstrap.yml配置(xxl-job-admin模块)
server:
port: 8181
spring:
profiles:
active: prod #这里暂时无法分出多个配置文件,因为springboot 2.4之后把参数改了 ,如果分出去多个环境的配置文件,好像读取不到,
application:
name: xxl-job
cloud:
nacos:
discovery:
server-addr: http://192.168.1.123:8848 #Nacos服务注册中心地址
group: XXL_JOB
namespace: zboot-cloud-prod #直接指定测试环境的namespace,启动dev环境时需要注释
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr} #Nacos作为配置中心地址
namespace: ${spring.cloud.nacos.discovery.namespace} #启动dev环境时需要注释
file-extension: yml #指定yaml格式的配置
# 这里不能用 - 必须用 _ 否则 nacos配置中心匹配不上
group: ${spring.cloud.nacos.discovery.group}
4、使用idea打包
5、修改 Dockerfile
FROM openjdk:8-jre-slim
MAINTAINER xuxueli
ENV PARAMS=""
# 设置外部配置文件路径(必须,否则无法加载到此配置文件)
ENV JAVA_OPTS="-Dspring.config.location=/xxl-job/bootstrap.yml"
# 复制配置文件到容器中(将当前路径下的文件复制到容器的/xxl-job路径下)
COPY ./bootstrap.yml /xxl-job/bootstrap.yml
COPY ./logback.xml /xxl-job/logback.xml
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#将当前路径下的xxl-job-admin-*.jar文件添加到容器的/xxl-job路径下,并改名为app.jar
ADD xxl-job-admin-*.jar /xxl-job/app.jar
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xxl-job/app.jar $PARAMS"]
6、上传jar 包、配置文件、Dockerfile 到服务器xxl-job 目录下
7、编写 docker-compose.yml文件:
version: '3'
services:
xxl-job:
build: ./ #使用当前路径下Dockerfile构建后的本地镜像
container_name: zboot-xxl-job
restart: always
privileged: true
ports:
- "8181:8181"
volumes:
- ./data/logs:/data/applogs
#- ./data/xxl-job/:/xxl-job #注意:这里如果做了映射,需要将jar包复制到 ./data/xxl-job/ 目录下 否则容器启动时报错找不到jar包文件
8、启动
docker-compse up -d
9、也可以不通过docker-compose的方式直接docker构建镜像然后启动
docker build -t zboot-xxl-job-admin .
docker run -d -p 8181:8181 zboot-xxl-job-admin
ps:如果构建失败,可能是windows文件上传到centos上的问题
使用 vim -b {文件名}
编辑文件
每行结尾会有一个 ^M
符号,删除就好了
10、springboot添加依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
11、springboot添加配置类
/**
* @Author zyf
* @Date 2021/9/4 12:55
* @Version 1.0
*/
@Slf4j
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.appname}")
private String appname;
@Value("${xxl.job.executor.address}")
private String address;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
12、SpringBoot nacos配置
# xxl-job配置
xxl:
job:
admin:
addresses: http://192.168.1.123:8181
executor:
address: http://192.168.1.123:9811
appname: zboot-cloud-el #注意这里的appname要和xxl-job后台添加的appname一致,否则无法自动获取执行器地址
ip: 192.168.1.123
port: 9811
logpath: /xxl-job/jobhandler
logretentiondays: 15
accessToken: xxxxxxxxx
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 奇怪的阿峰
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果