xxl-job Docker & Self-Hosted Deployment

GitHub

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)

30,626 stars Java Java 4 files · ~50,006 tokens #cron#distributed#glue#java#job#quartz#restful#schedule
RAW Compose
1. Pull Image (DOCKERHUB) docker pull xuxueli/xxl-job-admin
2. Docker Run (1-Click Launch) docker run -d --name xxl-job -p 3306:3306 --restart always xuxueli/xxl-job-admin:local
3. Podman Run podman run -d --name xxl-job -p 3306:3306 --restart always xuxueli/xxl-job-admin:local
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/xuxueli/xxl-job-admin:local
5. ORAS Pull (OCI Artifact) oras pull xuxueli/xxl-job-admin:local
6. Compose Deployment docker compose up -d
docker/docker-compose.yml
Download .yml
# docker-compose version
version: '3.8'

services:
  mysql:
    image: mysql:8.4
    container_name: xxl-job-mysql
    environment:
      # 1、数据库密码设置,需要与Admin中配置一致:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      # 2、数据库实例名称,需要与Admin中配置一致;
      MYSQL_DATABASE: xxl_job
    ports:
      - "3306:3306"
    volumes:
      # 说明:仅数据库首次初始化时执行;
      - ../doc/db/tables_xxl_job.sql:/docker-entrypoint-initdb.d/tables_xxl_job.sql:ro
      # 3、数据库持久化目录位置,建议自定义:
      - ${MYSQL_PATH}/conf:/etc/mysql/conf.d
      - ${MYSQL_PATH}/logs:/var/log/mysql
      - ${MYSQL_PATH}/data:/var/lib/mysql
    command: >-
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
    networks:
      - xxl-job-network

  xxl-job-admin:
    # 4、本地Build设置,如果期望使用推动DockerHub的镜像,可以注释当前启用的image、build配置,并启用如下设置版本的image配置;
    #image: xuxueli/xxl-job-admin:{version}
    image: xuxueli/xxl-job-admin:local
    build:
      context: ../xxl-job-admin
      dockerfile: Dockerfile
    container_name: xxl-job-admin
    environment:
      # 5、数据库密码设置,需要与上文Mysql中保持一致:
      PARAMS: >-
        --spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
        --spring.datasource.username=root 
        --spring.datasource.password=${MYSQL_ROOT_PASSWORD}
        --server.port=${XXL_JOB_ADMIN_PORT}
        --server.servlet.context-path=${XXL_JOB_ADMIN_CONTEXT_PATH}
    ports:
      - "${XXL_JOB_ADMIN_PORT}:${XXL_JOB_ADMIN_PORT}"
    depends_on:
      mysql:
        condition: service_healthy
    networks:
      - xxl-job-network

  xxl-job-executor-sample-springboot:
    image: xuxueli/xxl-job-executor-sample-springboot:local
    build:
      context: ../xxl-job-executor-samples/xxl-job-executor-sample-springboot
      dockerfile: Dockerfile
    container_name: xxl-job-executor-sample-springboot
    environment:
      PARAMS: >-
        --xxl.job.admin.addresses=http://xxl-job-admin:${XXL_JOB_ADMIN_PORT}${XXL_JOB_ADMIN_CONTEXT_PATH:-/}
    ports:
      - "9999:9999"
    depends_on:
      xxl-job-admin:
        condition: service_started
    networks:
      - xxl-job-network

networks:
  xxl-job-network:
    driver: bridge