Docker Compose 和 XXL-Job 简介

Docker Compose

[Docker Compose]( 是一个用于定义和运行多个 Docker 容器的工具。它使用 YAML 文件来配置应用程序的服务、网络和卷等。通过 Docker Compose,我们可以轻松地构建、启动和停止由多个容器组成的应用程序。

XXL-Job

[XXL-Job]( 是一个分布式任务调度平台,由徐学礼开发和维护。它提供了强大的任务调度能力,可用于实现各种定时任务、异步任务和分布式任务等。XXL-Job 提供了可视化的任务管理和监控界面,方便开发人员进行任务的配置和管理。

Docker Compose 配置示例

以下是一个使用 Docker Compose 配置 XXL-Job 的示例:

version: '3.8'  # 使用的 Docker Compose 版本

services:
  xxl-job-admin:
    image: xuxueli/xxl-job-admin:2.3.0
    ports:
      - 8080:8080  # 将容器的 8080 端口映射到主机的 8080 端口
    environment:
      - PARAMS_ENV_SPRING_DATASOURCE_URL=jdbc:mysql://mysql-server:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8  # 设置数据库连接信息
      - PARAMS_ENV_SPRING_DATASOURCE_USERNAME=root  # 设置数据库用户名
      - PARAMS_ENV_SPRING_DATASOURCE_PASSWORD=root123456  # 设置数据库密码
      - PARAMS_ENV_SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver  # 设置数据库驱动类名
      - PARAMS_ENV_XXL_JOB_ACCESS_TOKEN=123456  # 设置访问令牌
    depends_on:
      - mysql-server  # 依赖 mysql-server 服务

  mysql-server:
    image: mysql:8.0
    restart: always
    ports:
      - 3306:3306  # 将容器的 3306 端口映射到主机的 3306 端口
    environment:
      - MYSQL_ROOT_PASSWORD=root123456  # 设置 root 用户的密码
      - MYSQL_DATABASE=xxl_job  # 设置要创建的数据库
    volumes:
      - ./mysql-data:/var/lib/mysql  # 持久化存储数据库数据

上述配置文件定义了两个服务:xxl-job-adminmysql-serverxxl-job-admin 服务使用 xuxueli/xxl-job-admin:2.3.0 镜像,将容器的 8080 端口映射到主机的 8080 端口,并设置了环境变量来配置数据库连接信息和访问令牌。mysql-server 服务使用 mysql:8.0 镜像,将容器的 3306 端口映射到主机的 3306 端口,并设置了环境变量来配置数据库密码和要创建的数据库,同时使用卷来持久化存储数据库数据。

使用 Docker Compose 启动 XXL-Job

要使用 Docker Compose 启动 XXL-Job,只需在配置文件所在的目录中执行以下命令:

docker-compose up

Docker Compose 将会根据配置文件创建并启动指定的容器。在启动过程中,你可以在终端中看到容器的输出日志,以及 XXL-Job Admin 的访问地址。一旦容器启动成功,你就可以通过访问 http://localhost:8080/xxl-job-admin 来打开 XXL-Job Admin 界面。

Docker Compose 配置与 XXL-Job 的配合使用

使用 Docker Compose 配置和启动 XXL-Job 的优点是可以将环境配置、依赖管理和服务启动统一化,方便开发和部署。通过 Docker Compose,我们可以轻松地在任何支持 Docker 的环境中部署 XXL-Job,并保证配置的一致性。

除了 XXL-Job Admin 服务,XXL-Job 还包含了执行器(Executor)服务,用于执行具体的任务。如果需要使用 Executor 服务,只需在配置文件中