Apache DolphinScheduler Docker Compose 部署指南
2025-07-06 04:36:40作者:范靓好Udolf
概述
Apache DolphinScheduler 是一个分布式易扩展的可视化工作流任务调度系统。本文将通过 Docker Compose 方式详细讲解如何部署 DolphinScheduler 的完整服务集群。
核心组件解析
DolphinScheduler 的 Docker Compose 部署包含以下核心服务:
- PostgreSQL 数据库:存储工作流元数据、用户信息等
- ZooKeeper 服务:提供分布式协调服务
- API 服务:提供 RESTful API 接口
- Alert 服务:负责告警通知
- Master 服务:工作流调度主节点
- Worker 服务:任务执行节点
详细配置说明
数据库服务配置
dolphinscheduler-postgresql:
image: bitnami/postgresql:11.11.0
environment:
POSTGRESQL_USERNAME: root
POSTGRESQL_PASSWORD: root
POSTGRESQL_DATABASE: dolphinscheduler
- 使用 Bitnami 提供的 PostgreSQL 11.11.0 镜像
- 预设了用户名、密码和数据库名称
- 数据通过卷持久化存储
ZooKeeper 服务配置
dolphinscheduler-zookeeper:
image: bitnami/zookeeper:3.6.2
environment:
ALLOW_ANONYMOUS_LOGIN: "yes"
- 使用 ZooKeeper 3.6.2 版本
- 允许匿名登录(仅限测试环境)
- 开放了 srvr、ruok 等监控命令
API 服务配置
dolphinscheduler-api:
image: apache/dolphinscheduler:2.0.7
command: api-server
ports:
- 12345:12345
- 使用 DolphinScheduler 2.0.7 官方镜像
- 暴露 12345 端口供外部访问
- 依赖 PostgreSQL 和 ZooKeeper 服务
- 配置了健康检查机制
Master 服务配置
dolphinscheduler-master:
image: apache/dolphinscheduler:2.0.7
command: master-server
- Master 服务负责工作流调度
- 同样依赖数据库和 ZooKeeper
- 日志和共享目录通过卷挂载
Worker 服务配置
dolphinscheduler-worker:
image: apache/dolphinscheduler:2.0.7
command: worker-server
volumes:
- dolphinscheduler-worker-data:/tmp/dolphinscheduler
- Worker 服务负责实际任务执行
- 有独立的数据卷存储临时文件
- 可以横向扩展多个 Worker 实例
网络与存储配置
网络配置
networks:
dolphinscheduler:
driver: bridge
- 创建名为 dolphinscheduler 的桥接网络
- 所有服务在同一网络内可互相通信
卷配置
volumes:
dolphinscheduler-postgresql:
dolphinscheduler-zookeeper:
dolphinscheduler-worker-data:
dolphinscheduler-logs:
- 为各服务配置独立的数据卷
- 确保数据持久化不丢失
- 日志集中存储便于排查问题
部署实践建议
-
生产环境调整:
- 修改默认数据库密码
- 关闭 ZooKeeper 匿名访问
- 根据负载调整服务资源限制
-
高可用部署:
- 可以扩展多个 Master 实例
- 增加 Worker 节点数量
- 考虑使用外部数据库集群
-
监控配置:
- 对各服务配置监控探针
- 收集和分析日志数据
- 设置合理的告警阈值
常见问题处理
-
服务启动顺序问题:
- 使用 depends_on 确保依赖服务先启动
- 添加健康检查避免服务未就绪时被调用
-
资源不足问题:
- 调整 JVM 内存参数
- 增加容器资源限制
-
时区问题:
- 所有服务统一配置 TZ: Asia/Shanghai
- 确保主机时区与容器一致
通过本文介绍的 Docker Compose 部署方式,您可以快速搭建一个功能完整的 DolphinScheduler 集群环境,为后续的工作流开发和任务调度打下坚实基础。