news 2026/9/23 16:32:51

Apache DolphinScheduler Docker 部署指南:三种方式快速启动与配置详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache DolphinScheduler Docker 部署指南:三种方式快速启动与配置详解

Apache DolphinScheduler Docker 部署指南:三种方式快速启动与配置详解

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/gh_mirrors/do/dolphinscheduler

导读

本文围绕 Apache DolphinScheduler 的 Docker 部署展开,系统讲解三种启动方式:使用standalone-server镜像快速体验、使用docker-compose启动完整服务、以及沿用已有 PostgreSQL 与 ZooKeeper 基础设施分别启动各服务容器。读完本文,你将掌握 DolphinScheduler 全部 Docker 部署命令、关键环境变量与端口映射、数据库初始化流程(upgrade-schema.sh)的底层原理,并能根据自身场景(快速尝鲜、长期稳定运行、复用已有基础组件)做出正确的部署选型。

前置条件

在开始任何 Docker 部署之前,需要先在本机安装以下工具:

  • Docker:1.13.1 及以上版本,参考 Docker Engine 安装文档;
  • Docker Compose:1.28.0 及以上版本,参考 Docker Compose 安装文档,链接适用于 Mac、Linux、Windows。

提示:如果通过 docker-compose 启动服务,建议为 Docker 守护进程分配不少于 4GB 的空闲内存,以保证各服务组件(API、Master、Worker、Alert、PostgreSQL、ZooKeeper)能顺利运行。

方式一:使用 standalone-server 镜像快速体验

如果你只是想以最小的成本快速体验 DolphinScheduler 的核心功能和主要概念,推荐使用apache/dolphinscheduler-standalone-server镜像。它把全部服务打包进一个进程,执行一条命令即可启动:

$ DOLPHINSCHEDULER_VERSION=<version> $ docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p 25333:25333 -d apache/dolphinscheduler-standalone-server:"${DOLPHINSCHEDULER_VERSION}"

命令中映射的两个端口分别为:

端口用途
12345DolphinScheduler API 服务端口,Web UI 即通过该端口访问
25333API 服务通信端口

standalone-server 的适用边界

请不要将 standalone-server 镜像用于生产环境,它只适合首次体验,原因有三:

  1. 单进程运行全部服务:Master、Worker、API、Alert 等组件全部运行在一个进程内,一旦进程退出,所有服务同时停止;
  2. 内存数据库 H2:standalone-server 使用 H2 内存数据库存储元数据,服务停止后元数据会被清空(如确有需要,可通过配置切换为其他数据库持久化);
  3. 功能裁剪:镜像仅包含 DolphinScheduler 核心服务,部分任务组件(如 Spark、Flink)与告警组件(如 Telegram、Dingtalk 等)需要外部组件或相应配置后才能使用。

方式二:使用 docker-compose 启动完整服务

与 standalone-server 单进程模式不同,通过 docker-compose 启动时,DolphinScheduler 的各个组件运行在独立的容器与进程中,相互影响最小,且元数据可以持久化到磁盘卷中(挂载本地路径需自行配置)。这种方式更健壮,适合中小规模、需要长期稳定运行的场景。

获取 docker-compose 文件

docker-compose 编排文件位于源码包的deploy/docker目录下。可以通过官方下载页面下载对应版本的源码包,解压后进入该目录执行部署命令:

$ DOLPHINSCHEDULER_VERSION=<version> $ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.tar.gz # Mac / Linux 用户 $ cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src/deploy/docker # Windows 用户 $ cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src\deploy\docker

分两步启动:先初始化 Schema,再启动全部服务

# 如果需要初始化或者升级数据库结构,指定 profile 为 schema $ docker-compose --profile schema up -d # 启动 DolphinScheduler 所有服务,指定 profile 为 all $ docker-compose --profile all up -d

两步分别对应 docker-compose.yml 中定义的两组服务:

  • --profile schema:仅启动dolphinscheduler-postgresqldolphinscheduler-schema-initializer。前者是元数据库(PostgreSQL),后者使用dolphinscheduler-tools镜像执行数据库初始化脚本,depends_on指定了 PostgreSQL 必须通过健康检查(healthcheck探测127.0.0.1:5432)后才开始初始化;
  • --profile all:启动全部业务服务dolphinscheduler-apidolphinscheduler-alertdolphinscheduler-masterdolphinscheduler-worker,以及依赖的dolphinscheduler-zookeeper服务发现组件。

提醒:通过 docker-compose 启动时,除了 DolphinScheduler 自身的各服务外,还会一并启动必要的依赖服务:PostgreSQL(用户root、密码root、数据库dolphinscheduler)与 ZooKeeper。

docker-compose 服务拓扑与端口一览

基于仓库中 docker-compose.yml 的实际定义,各服务的镜像、端口与健康检查如下:

服务镜像对外端口健康检查端口挂载卷
dolphinscheduler-postgresqlbitnami/postgresql:15.2.054325432(tcp 探测)dolphinscheduler-postgresql
dolphinscheduler-zookeeperbitnami/zookeeper:3.7.12181(tcp 探测)dolphinscheduler-zookeeper
dolphinscheduler-api${HUB}/dolphinscheduler-api:${TAG}123452533312345/dolphinscheduler/actuator/healthlogs、shared-local、resource-local
dolphinscheduler-alert${HUB}/dolphinscheduler-alert-server:${TAG}50053/actuator/healthlogs
dolphinscheduler-master${HUB}/dolphinscheduler-master:${TAG}5679/actuator/healthlogs、shared-local
dolphinscheduler-worker${HUB}/dolphinscheduler-worker:${TAG}1235/actuator/healthworker-data、logs、shared-local、resource-local

其中${HUB}${TAG}由 .env 文件注入,默认值分别为ghcr.io/apache/dolphinschedulerlatest,如需切换镜像仓库或固定版本号,直接修改该文件即可:

HUB=ghcr.io/apache/dolphinscheduler TAG=latest TZ=Asia/Shanghai DATABASE=postgresql SPRING_JACKSON_TIME_ZONE=UTC SPRING_DATASOURCE_URL=jdbc:postgresql://dolphinscheduler-postgresql:5432/dolphinscheduler REGISTRY_ZOOKEEPER_CONNECT_STRING=dolphinscheduler-zookeeper:2181

几个值得注意的配置细节:

  • 所有业务服务通过env_file: .env注入统一的数据源与注册中心配置,保证各容器使用同一个 PostgreSQL 与 ZooKeeper;
  • 容器间通过自定义 bridge 网络dolphinscheduler通信,因此.env中的SPRING_DATASOURCE_URL使用服务名dolphinscheduler-postgresqlREGISTRY_ZOOKEEPER_CONNECT_STRING使用dolphinscheduler-zookeeper作为主机名;
  • 定义了 5 个命名卷(dolphinscheduler-postgresqldolphinscheduler-zookeeperdolphinscheduler-worker-datadolphinscheduler-logsdolphinscheduler-shared-localdolphinscheduler-resource-local),元数据、日志、任务临时数据与资源文件均持久化于命名卷中,这是 docker-compose 方式能跨重启保留数据的关键。

另外,仓库中还提供了面向 Docker Swarm 的编排文件 docker-stack.yml(version: "3.1",网络驱动为 overlay,并为每个服务声明了deploy.replicas: 1),适用于已在生产环境使用 Swarm 模式编排的团队。

方式三:沿用已有的 PostgreSQL 和 ZooKeeper 服务

使用 docker-compose 启动会新建数据库和 ZooKeeper 容器。如果你已经运行着 PostgreSQL(8.2.15+)和 ZooKeeper(3.8.0)服务,并且希望复用它们,可以分别启动 DolphinScheduler 的各个容器。

第 1 步:初始化数据库

使用dolphinscheduler-tools镜像执行数据库初始化/升级脚本(确保目标数据库<DATABASE>已提前创建):

$ DOLPHINSCHEDULER_VERSION=<version> $ docker run -d --name dolphinscheduler-tools \ -e DATABASE="postgresql" \ -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \ -e SPRING_DATASOURCE_USERNAME="<USER>" \ -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \ -e SPRING_JACKSON_TIME_ZONE="UTC" \ --net host \ apache/dolphinscheduler-tools:"${DOLPHINSCHEDULER_VERSION}" tools/bin/upgrade-schema.sh

第 2 步:分别启动各服务容器

依次启动 Master、Worker、API、Alert Server 四个容器,每个容器都需要配置数据库连接与注册中心地址:

# 启动 dolphinscheduler-master $ docker run -d --name dolphinscheduler-master \ -e DATABASE="postgresql" \ -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \ -e SPRING_DATASOURCE_USERNAME="<USER>" \ -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \ -e SPRING_JACKSON_TIME_ZONE="UTC" \ -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ --net host \ -d apache/dolphinscheduler-master:"${DOLPHINSCHEDULER_VERSION}" # 启动 dolphinscheduler-worker $ docker run -d --name dolphinscheduler-worker \ -e DATABASE="postgresql" \ -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \ -e SPRING_DATASOURCE_USERNAME="<USER>" \ -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \ -e SPRING_JACKSON_TIME_ZONE="UTC" \ -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ --net host \ -d apache/dolphinscheduler-worker:"${DOLPHINSCHEDULER_VERSION}" # 启动 dolphinscheduler-api $ docker run -d --name dolphinscheduler-api \ -e DATABASE="postgresql" \ -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \ -e SPRING_DATASOURCE_USERNAME="<USER>" \ -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \ -e SPRING_JACKSON_TIME_ZONE="UTC" \ -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ --net host \ -d apache/dolphinscheduler-api:"${DOLPHINSCHEDULER_VERSION}" # 启动 dolphinscheduler-alert-server $ docker run -d --name dolphinscheduler-alert-server \ -e DATABASE="postgresql" \ -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \ -e SPRING_DATASOURCE_USERNAME="<USER>" \ -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \ -e SPRING_JACKSON_TIME_ZONE="UTC" \ -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ --net host \ -d apache/dolphinscheduler-alert-server:"${DOLPHINSCHEDULER_VERSION}"

关于 upgrade-schema.sh 的源码级说明

数据库初始化命令中的tools/bin/upgrade-schema.sh对应仓库中的 upgrade-schema.sh。从脚本源码看,其核心调用逻辑是:

$JAVA_HOME/bin/java $JAVA_OPTS \ -cp "$DOLPHINSCHEDULER_HOME/tools/conf":"$DOLPHINSCHEDULER_HOME/tools/libs/*":"$DOLPHINSCHEDULER_HOME/tools/sql" \ -Dspring.profiles.active=upgrade,${DATABASE} \ org.apache.dolphinscheduler.tools.datasource.UpgradeDolphinScheduler

关键点有两个:

  1. -Dspring.profiles.active=upgrade,${DATABASE}:通过环境变量DATABASE(此处为postgresql)激活对应的数据库方言 Profile,Spring Boot 据此选择 PostgreSQL 的建表/升级 SQL 方言;
  2. 入口类UpgradeDolphinScheduler:其升级流程由 DolphinSchedulerManager 驱动——先判断当前元数据版本(读取t_escheduler_versiont_ds_version表),再按版本依次执行sql/upgrade/{schemaDir}/{dbType}/dolphinscheduler_ddl.sqldolphinscheduler_dml.sql完成结构升级与数据迁移,最后更新版本号。也就是说,这条命令既承担首次建库(初始化 schema),也承担后续版本升级,是复用已有数据库时必不可少的第一步。

注意:如果本地还没有 PostgreSQL 和 ZooKeeper 服务,又想尝试这种方式,可以自行安装并启动 PostgreSQL(8.2.15+)与 ZooKeeper(3.8.0)后再执行上述命令。

登录系统

无论使用以上哪种方式启动,只要服务正常启动,即可通过浏览器访问 Web UI:

  • 访问地址:http://localhost:12345/dolphinscheduler/ui
  • 默认用户名:admin
  • 默认密码:dolphinscheduler123

访问后会跳转到登录页面:

注意:如果你使用“沿用已有的 PostgreSQL 和 ZooKeeper 服务”方式,且服务分布在多台机器上,请将访问地址中的localhost替换为 API 容器所在主机的 hostname 或 IP。

登录成功后,后续的创建工作流、配置任务等操作可参考用户手册 快速上手。

通过环境变量修改 Docker 运行配置

在 Docker 部署场景下,DolphinScheduler 各组件支持通过环境变量覆盖运行配置。前文“沿用已有服务”的方式正是通过环境变量修改了数据库连接(SPRING_DATASOURCE_URLSPRING_DATASOURCE_USERNAMESPRING_DATASOURCE_PASSWORD)与注册中心(REGISTRY_ZOOKEEPER_CONNECT_STRING)配置。

常用环境变量速查:

环境变量作用
DATABASE数据库类型(如postgresqlmysql),同时决定 Spring Profile 与 SQL 方言
SPRING_DATASOURCE_URLJDBC 数据源连接地址
SPRING_DATASOURCE_USERNAME数据库用户名
SPRING_DATASOURCE_PASSWORD数据库密码
SPRING_JACKSON_TIME_ZONEJSON 序列化时区,生产环境建议固定为UTC或你的业务时区
REGISTRY_ZOOKEEPER_CONNECT_STRINGZooKeeper 连接串,用于服务注册与发现
TZ容器时区(docker-compose 方式在.env中设置,默认Asia/Shanghai

全部可配置的环境变量可通过查看各组件镜像内的application.yaml文件了解(例如 dolphinscheduler-api、dolphinscheduler-master、dolphinscheduler-worker 等,Spring Boot 会将环境变量自动映射为spring.*registry.*等配置项)。

三种部署方式选型总结

方式适用场景数据持久化生产可用性
standalone-server 镜像首次体验、学习概念、功能尝鲜不持久化(H2 内存库,停止即清空)不建议生产
docker-compose中小规模、需要长期稳定运行元数据存于命名卷(PostgreSQL),可跨重启保留适合测试与中小规模业务
沿用已有 PostgreSQL + ZooKeeper已有基础设施、需要复用现网组件数据落在已有数据库与注册中心适合与已有组件体系集成

无论选择哪种方式,启动后的访问入口、默认账号与配置覆盖机制都是一致的,你可以根据团队基础设施现状与稳定性要求灵活切换部署形态。

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/gh_mirrors/do/dolphinscheduler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 16:30:44

深入理解JavaScript事件循环:宏任务与微任务的执行顺序

你打开浏览器控制台&#xff0c;敲下这三行代码&#xff0c;先别急着看答案&#xff0c;在心里默念一遍输出顺序&#xff1a;console.log(start); setTimeout(() > console.log(timeout)); Promise.resolve().then(() > console.log(promise));我太熟悉这道题了。几乎每次…

作者头像 李华
网站建设 2026/9/23 16:29:40

Windows原生PDF页码统计工具:精准获取物理页数

简介&#xff1a;这是一款面向Windows平台用户的PDF页码批量统计工具&#xff0c;适用于文档管理、归档审核、出版排版等需快速获取PDF页数的办公与开发场景&#xff0c;尤其适合非编程背景的行政、编辑及初级Python学习者。资源包共5个文件&#xff0c;含2个测试PDF样本&#…

作者头像 李华
网站建设 2026/9/23 16:29:37

AZ-104备考指南:从考纲拆解到命令行实战的全流程攻略

简介&#xff1a;AZ-104 是微软 MCP 认证体系中面向 Azure 管理员方向的官方考试&#xff0c;这份 PDF 题库专为计划考取该认证的 IT 运维、云架构师及企业 Azure 使用者精心准备。整个压缩包仅含 1 个 PDF 文件&#xff0c;包体约 45.55MB&#xff0c;题目按 Topic 内容清晰分…

作者头像 李华
网站建设 2026/9/23 16:29:09

Claude Code OpenAI兼容与DeepSeek工具链集成实战指南

1. 标题里的“格式投降”不是妥协&#xff0c;是工程现实的主动选择“Claude Code下半年&#xff1a;格式投降OpenAI&#xff0c;功能借鉴DeepSeek”——这个标题乍看像一句调侃&#xff0c;实则精准戳中了当前本地大模型开发工具链演进的核心矛盾&#xff1a;协议兼容性比模型…

作者头像 李华
网站建设 2026/9/23 16:28:35

海康威视IPC+OpenCV人体检测实战:从拉流到部署的全链路避坑指南

简介&#xff1a;本资源是一套基于海康威视网络摄像头与OpenCV实现人体识别的完整C工程&#xff0c;适用于计算机视觉方向的本科毕业设计、课程设计及项目实践&#xff0c;面向具备C基础与OpenCV入门经验的学习者。项目采用HOGSVM等传统机器学习方法进行人体检测&#xff0c;包…

作者头像 李华
网站建设 2026/9/23 16:28:19

Ontology(本体)怎样工作?RDF、OWL、SPARQL、SHACL 各管什么

上面这张图&#xff0c;先把本文要讲的事说完了。 同一张售后工单&#xff0c;会依次遇到四类问题&#xff1a;事实怎么表达&#xff0c;规则怎么推理&#xff0c;结果怎么查出来&#xff0c;当前数据够不够进入下一步。很多 Ontology 文章会从 RDF、OWL、SPARQL、SHACL 的定义…

作者头像 李华