ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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 部署之前需要先在本机安装以下工具Docker1.13.1 及以上版本参考 Docker Engine 安装文档Docker Compose1.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_VERSIONversion $ 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 镜像用于生产环境它只适合首次体验原因有三单进程运行全部服务Master、Worker、API、Alert 等组件全部运行在一个进程内一旦进程退出所有服务同时停止内存数据库 H2standalone-server 使用 H2 内存数据库存储元数据服务停止后元数据会被清空如确有需要可通过配置切换为其他数据库持久化功能裁剪镜像仅包含 DolphinScheduler 核心服务部分任务组件如 Spark、Flink与告警组件如 Telegram、Dingtalk 等需要外部组件或相应配置后才能使用。方式二使用 docker-compose 启动完整服务与 standalone-server 单进程模式不同通过 docker-compose 启动时DolphinScheduler 的各个组件运行在独立的容器与进程中相互影响最小且元数据可以持久化到磁盘卷中挂载本地路径需自行配置。这种方式更健壮适合中小规模、需要长期稳定运行的场景。获取 docker-compose 文件docker-compose 编排文件位于源码包的deploy/docker目录下。可以通过官方下载页面下载对应版本的源码包解压后进入该目录执行部署命令$ DOLPHINSCHEDULER_VERSIONversion $ 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-postgresql与dolphinscheduler-schema-initializer。前者是元数据库PostgreSQL后者使用dolphinscheduler-tools镜像执行数据库初始化脚本depends_on指定了 PostgreSQL 必须通过健康检查healthcheck探测127.0.0.1:5432后才开始初始化--profile all启动全部业务服务dolphinscheduler-api、dolphinscheduler-alert、dolphinscheduler-master、dolphinscheduler-worker以及依赖的dolphinscheduler-zookeeper服务发现组件。提醒通过 docker-compose 启动时除了 DolphinScheduler 自身的各服务外还会一并启动必要的依赖服务PostgreSQL用户root、密码root、数据库dolphinscheduler与 ZooKeeper。docker-compose 服务拓扑与端口一览基于仓库中 docker-compose.yml 的实际定义各服务的镜像、端口与健康检查如下服务镜像对外端口健康检查端口挂载卷dolphinscheduler-postgresqlbitnami/postgresql:15.2.054325432tcp 探测dolphinscheduler-postgresqldolphinscheduler-zookeeperbitnami/zookeeper:3.7.1无2181tcp 探测dolphinscheduler-zookeeperdolphinscheduler-api${HUB}/dolphinscheduler-api:${TAG}12345、2533312345/dolphinscheduler/actuator/healthlogs、shared-local、resource-localdolphinscheduler-alert${HUB}/dolphinscheduler-alert-server:${TAG}无50053/actuator/healthlogsdolphinscheduler-master${HUB}/dolphinscheduler-master:${TAG}无5679/actuator/healthlogs、shared-localdolphinscheduler-worker${HUB}/dolphinscheduler-worker:${TAG}无1235/actuator/healthworker-data、logs、shared-local、resource-local其中${HUB}与${TAG}由 .env 文件注入默认值分别为ghcr.io/apache/dolphinscheduler与latest如需切换镜像仓库或固定版本号直接修改该文件即可HUBghcr.io/apache/dolphinscheduler TAGlatest TZAsia/Shanghai DATABASEpostgresql SPRING_JACKSON_TIME_ZONEUTC SPRING_DATASOURCE_URLjdbc:postgresql://dolphinscheduler-postgresql:5432/dolphinscheduler REGISTRY_ZOOKEEPER_CONNECT_STRINGdolphinscheduler-zookeeper:2181几个值得注意的配置细节所有业务服务通过env_file: .env注入统一的数据源与注册中心配置保证各容器使用同一个 PostgreSQL 与 ZooKeeper容器间通过自定义 bridge 网络dolphinscheduler通信因此.env中的SPRING_DATASOURCE_URL使用服务名dolphinscheduler-postgresql、REGISTRY_ZOOKEEPER_CONNECT_STRING使用dolphinscheduler-zookeeper作为主机名定义了 5 个命名卷dolphinscheduler-postgresql、dolphinscheduler-zookeeper、dolphinscheduler-worker-data、dolphinscheduler-logs、dolphinscheduler-shared-local、dolphinscheduler-resource-local元数据、日志、任务临时数据与资源文件均持久化于命名卷中这是 docker-compose 方式能跨重启保留数据的关键。另外仓库中还提供了面向 Docker Swarm 的编排文件 docker-stack.ymlversion: 3.1网络驱动为 overlay并为每个服务声明了deploy.replicas: 1适用于已在生产环境使用 Swarm 模式编排的团队。方式三沿用已有的 PostgreSQL 和 ZooKeeper 服务使用 docker-compose 启动会新建数据库和 ZooKeeper 容器。如果你已经运行着 PostgreSQL8.2.15和 ZooKeeper3.8.0服务并且希望复用它们可以分别启动 DolphinScheduler 的各个容器。第 1 步初始化数据库使用dolphinscheduler-tools镜像执行数据库初始化/升级脚本确保目标数据库DATABASE已提前创建$ DOLPHINSCHEDULER_VERSIONversion $ docker run -d --name dolphinscheduler-tools \ -e DATABASEpostgresql \ -e SPRING_DATASOURCE_URLjdbc:postgresql://localhost:5432/DATABASE \ -e SPRING_DATASOURCE_USERNAMEUSER \ -e SPRING_DATASOURCE_PASSWORDPASSWORD \ -e SPRING_JACKSON_TIME_ZONEUTC \ --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 DATABASEpostgresql \ -e SPRING_DATASOURCE_URLjdbc:postgresql://localhost:5432/DATABASE \ -e SPRING_DATASOURCE_USERNAMEUSER \ -e SPRING_DATASOURCE_PASSWORDPASSWORD \ -e SPRING_JACKSON_TIME_ZONEUTC \ -e REGISTRY_ZOOKEEPER_CONNECT_STRINGlocalhost:2181 \ --net host \ -d apache/dolphinscheduler-master:${DOLPHINSCHEDULER_VERSION} # 启动 dolphinscheduler-worker $ docker run -d --name dolphinscheduler-worker \ -e DATABASEpostgresql \ -e SPRING_DATASOURCE_URLjdbc:postgresql://localhost:5432/DATABASE \ -e SPRING_DATASOURCE_USERNAMEUSER \ -e SPRING_DATASOURCE_PASSWORDPASSWORD \ -e SPRING_JACKSON_TIME_ZONEUTC \ -e REGISTRY_ZOOKEEPER_CONNECT_STRINGlocalhost:2181 \ --net host \ -d apache/dolphinscheduler-worker:${DOLPHINSCHEDULER_VERSION} # 启动 dolphinscheduler-api $ docker run -d --name dolphinscheduler-api \ -e DATABASEpostgresql \ -e SPRING_DATASOURCE_URLjdbc:postgresql://localhost:5432/DATABASE \ -e SPRING_DATASOURCE_USERNAMEUSER \ -e SPRING_DATASOURCE_PASSWORDPASSWORD \ -e SPRING_JACKSON_TIME_ZONEUTC \ -e REGISTRY_ZOOKEEPER_CONNECT_STRINGlocalhost:2181 \ --net host \ -d apache/dolphinscheduler-api:${DOLPHINSCHEDULER_VERSION} # 启动 dolphinscheduler-alert-server $ docker run -d --name dolphinscheduler-alert-server \ -e DATABASEpostgresql \ -e SPRING_DATASOURCE_URLjdbc:postgresql://localhost:5432/DATABASE \ -e SPRING_DATASOURCE_USERNAMEUSER \ -e SPRING_DATASOURCE_PASSWORDPASSWORD \ -e SPRING_JACKSON_TIME_ZONEUTC \ -e REGISTRY_ZOOKEEPER_CONNECT_STRINGlocalhost: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.activeupgrade,${DATABASE} \ org.apache.dolphinscheduler.tools.datasource.UpgradeDolphinScheduler关键点有两个-Dspring.profiles.activeupgrade,${DATABASE}通过环境变量DATABASE此处为postgresql激活对应的数据库方言 ProfileSpring Boot 据此选择 PostgreSQL 的建表/升级 SQL 方言入口类UpgradeDolphinScheduler其升级流程由 DolphinSchedulerManager 驱动——先判断当前元数据版本读取t_escheduler_version或t_ds_version表再按版本依次执行sql/upgrade/{schemaDir}/{dbType}/dolphinscheduler_ddl.sql与dolphinscheduler_dml.sql完成结构升级与数据迁移最后更新版本号。也就是说这条命令既承担首次建库初始化 schema也承担后续版本升级是复用已有数据库时必不可少的第一步。注意如果本地还没有 PostgreSQL 和 ZooKeeper 服务又想尝试这种方式可以自行安装并启动 PostgreSQL8.2.15与 ZooKeeper3.8.0后再执行上述命令。登录系统无论使用以上哪种方式启动只要服务正常启动即可通过浏览器访问 Web UI访问地址http://localhost:12345/dolphinscheduler/ui默认用户名admin默认密码dolphinscheduler123访问后会跳转到登录页面注意如果你使用“沿用已有的 PostgreSQL 和 ZooKeeper 服务”方式且服务分布在多台机器上请将访问地址中的localhost替换为 API 容器所在主机的 hostname 或 IP。登录成功后后续的创建工作流、配置任务等操作可参考用户手册 快速上手。通过环境变量修改 Docker 运行配置在 Docker 部署场景下DolphinScheduler 各组件支持通过环境变量覆盖运行配置。前文“沿用已有服务”的方式正是通过环境变量修改了数据库连接SPRING_DATASOURCE_URL、SPRING_DATASOURCE_USERNAME、SPRING_DATASOURCE_PASSWORD与注册中心REGISTRY_ZOOKEEPER_CONNECT_STRING配置。常用环境变量速查环境变量作用DATABASE数据库类型如postgresql、mysql同时决定 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),仅供参考
返回列表