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