首页
/ PowerJob分布式任务调度系统Docker-Compose部署指南

PowerJob分布式任务调度系统Docker-Compose部署指南

2025-07-07 03:43:13作者:段琳惟

前言

PowerJob是一个开源的分布式任务调度系统,具有分布式计算、定时调度、工作流编排等功能。本文将详细介绍如何使用Docker-Compose快速部署PowerJob系统,包含MySQL数据库、服务端(Server)和示例工作节点(Worker)三个核心组件。

部署架构解析

PowerJob的Docker-Compose部署方案包含三个主要服务:

  1. MySQL数据库服务:存储系统元数据和任务执行记录
  2. Server服务:调度系统的核心控制节点
  3. Worker示例服务:任务执行节点示例

这种架构设计体现了PowerJob的分布式特性,各组件可以独立扩展和部署。

详细部署步骤

1. 准备工作

确保已安装Docker和Docker-Compose环境。建议分配至少2GB内存给Docker。

2. 配置文件解析

数据库服务配置

powerjob-mysql:
  environment:
    MYSQL_ROOT_HOST: "%"  # 允许所有主机连接
    MYSQL_ROOT_PASSWORD: No1Bug2Please3!  # root密码
  restart: always  # 自动重启
  image: powerjob/powerjob-mysql:latest
  ports:
    - "3307:3306"  # 端口映射
  volumes:
    - ./powerjob-data/powerjob-mysql:/var/lib/mysql  # 数据持久化
  command: --lower_case_table_names=1  # 表名小写

关键点:

  • 使用官方提供的MySQL镜像,已预配置PowerJob所需数据库
  • 数据持久化到本地目录,防止容器重启数据丢失
  • 设置表名小写,避免跨平台兼容性问题

服务端配置

powerjob-server:
  image: powerjob/powerjob-server:latest
  depends_on:
    - powerjob-mysql  # 依赖数据库
  environment:
    JVMOPTIONS: "-Xmx512m"  # JVM内存配置
    PARAMS: "--oms.mongodb.enable=false --spring.datasource.core.jdbc-url=jdbc:mysql://powerjob-mysql:3306/powerjob-daily?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
  ports:
    - "7700:7700"  # 服务端口
    - "10086:10086"  # 监控端口
    - "10010:10010"  # 其他服务端口
  volumes:
    - ./powerjob-data/powerjob-server:/root/powerjob/server/  # 数据持久化

关键点:

  • 禁用MongoDB,仅使用MySQL存储
  • 配置了MySQL连接字符串,注意时区设置为Asia/Shanghai
  • 暴露多个端口用于不同功能
  • 服务端数据也做了持久化

工作节点示例配置

powerjob-worker-samples:
  image: powerjob/powerjob-worker-samples:latest
  depends_on:
    - powerjob-mysql
    - powerjob-server
  ports:
    - "8081:8081"  # 工作节点端口
    - "27777:27777"  # 其他端口
  volumes:
    - ./powerjob-data/powerjob-worker-samples:/root/powerjob/worker
    - ./others/script/wait-for-it.sh:/wait-for-it.sh
  entrypoint:
    - "sh"
    - "-c"
    - "chmod +x wait-for-it.sh && ./wait-for-it.sh powerjob-server:7700 --strict -- java -Xmx512m -jar /powerjob-worker-samples.jar --powerjob.worker.server-address=powerjob-server:7700"

关键点:

  • 使用wait-for-it.sh脚本确保服务端就绪后再启动Worker
  • 配置Worker连接服务端的地址
  • 同样做了数据持久化

3. 启动服务

在包含docker-compose.yml的目录下执行:

docker-compose up

系统将按顺序启动MySQL、Server和Worker服务。首次启动可能需要几分钟时间初始化数据库。

4. 验证部署

服务启动完成后,可以通过以下方式验证:

  1. 访问 http://localhost:7700 查看服务端是否正常运行
  2. 检查日志确认Worker是否成功连接到Server
  3. 使用MySQL客户端连接3307端口验证数据库

常见问题解决

  1. 端口冲突:如果默认端口被占用,修改docker-compose.yml中的端口映射
  2. 启动顺序问题:如果Worker启动过早,会等待Server就绪
  3. 内存不足:调整JVMOPTIONS参数增加内存分配
  4. 数据持久化:确保挂载目录有写入权限

生产环境建议

  1. 修改默认密码,增强安全性
  2. 根据负载调整JVM内存参数
  3. 考虑使用独立的MySQL服务而非容器
  4. 配置适当的监控和告警
  5. 定期备份持久化数据

总结

通过Docker-Compose部署PowerJob可以快速搭建完整的开发和测试环境。本文详细解析了各组件配置和交互关系,帮助开发者理解系统架构。生产环境部署时,建议根据实际需求调整资源配置和安全设置。