PowerJob分布式任务调度系统Docker-Compose部署指南
2025-07-07 03:43:13作者:段琳惟
前言
PowerJob是一个开源的分布式任务调度系统,具有分布式计算、定时调度、工作流编排等功能。本文将详细介绍如何使用Docker-Compose快速部署PowerJob系统,包含MySQL数据库、服务端(Server)和示例工作节点(Worker)三个核心组件。
部署架构解析
PowerJob的Docker-Compose部署方案包含三个主要服务:
- MySQL数据库服务:存储系统元数据和任务执行记录
- Server服务:调度系统的核心控制节点
- 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. 验证部署
服务启动完成后,可以通过以下方式验证:
- 访问
http://localhost:7700
查看服务端是否正常运行 - 检查日志确认Worker是否成功连接到Server
- 使用MySQL客户端连接3307端口验证数据库
常见问题解决
- 端口冲突:如果默认端口被占用,修改docker-compose.yml中的端口映射
- 启动顺序问题:如果Worker启动过早,会等待Server就绪
- 内存不足:调整JVMOPTIONS参数增加内存分配
- 数据持久化:确保挂载目录有写入权限
生产环境建议
- 修改默认密码,增强安全性
- 根据负载调整JVM内存参数
- 考虑使用独立的MySQL服务而非容器
- 配置适当的监控和告警
- 定期备份持久化数据
总结
通过Docker-Compose部署PowerJob可以快速搭建完整的开发和测试环境。本文详细解析了各组件配置和交互关系,帮助开发者理解系统架构。生产环境部署时,建议根据实际需求调整资源配置和安全设置。