DolphinScheduler 3.4.1 Docker 部署安装 Skill

DolphinScheduler 3.4.1 Docker 部署安装技能

技能描述

本技能用于在 Linux 服务器上通过 Docker Compose 部署 DolphinScheduler 3.4.1,包含完整的下载、配置、插件安装和验证步骤。

适用场景

  • 全新部署 DolphinScheduler 3.4.1
  • 需要自定义镜像版本和端口配置
  • 需要安装基本插件(告警、数据源、存储、任务)
  • 需要启用 default 租户执行任务

前置条件

  • Linux 服务器(推荐 CentOS 7+ 或 Ubuntu 20.04+)
  • Docker 20.10+ 和 Docker Compose 2.0+
  • 网络连接正常(可访问 Apache 下载站点和 Maven 仓库)
  • 磁盘空间至少 20GB
  • root 权限或 sudo 权限

详细操作步骤

步骤 1:下载并解压安装包

bash 复制代码
# 创建部署目录
mkdir -p /root/dolphinscheduler/docker_deployment
cd /root/dolphinscheduler/docker_deployment

# 下载 DolphinScheduler 3.4.1 源码包
curl -O https://downloads.apache.org/dolphinscheduler/3.4.1/apache-dolphinscheduler-3.4.1-src.tar.gz

# 验证下载(可选)
ls -lh apache-dolphinscheduler-3.4.1-src.tar.gz

# 解压安装包
tar -xzf apache-dolphinscheduler-3.4.1-src.tar.gz

# 进入部署目录
cd apache-dolphinscheduler-3.4.1-src/deploy/docker

步骤 2:修改 docker-compose.yml 配置

2.1 备份原始配置
bash 复制代码
cp docker-compose.yml docker-compose.yml.bak
2.2 修改 Zookeeper 和 PostgreSQL 配置

使用 sed 命令或编辑器修改以下配置:

bash 复制代码
# 修改 Zookeeper 镜像(从 bitnami 改为官方镜像)
sed -i 's|bitnami/zookeeper:3.7.1|zookeeper:3.7|g' docker-compose.yml

# 修改 PostgreSQL 镜像(从 bitnami 改为官方镜像)
sed -i 's|bitnami/postgresql:15.2.0|postgres:15|g' docker-compose.yml

# 修改 PostgreSQL 环境变量(从 POSTGRESQL_* 改为 POSTGRES_*)
sed -i 's/POSTGRESQL_USERNAME/POSTGRES_USER/g' docker-compose.yml
sed -i 's/POSTGRESQL_PASSWORD/POSTGRES_PASSWORD/g' docker-compose.yml
sed -i 's/POSTGRESQL_DATABASE/POSTGRES_DB/g' docker-compose.yml

# 修改 PostgreSQL 数据卷路径
sed -i 's|dolphinscheduler-postgresql:/bitnami/postgresql|dolphinscheduler-postgresql:/var/lib/postgresql/data|g' docker-compose.yml

# 修改 Zookeeper 数据卷路径
sed -i 's|dolphinscheduler-zookeeper:/bitnami/zookeeper|dolphinscheduler-zookeeper:/var/lib/zookeeper|g' docker-compose.yml

# 修改 PostgreSQL 端口映射(从 5432 改为 5433,避免端口冲突)
sed -i 's|"5432:5432"|"5433:5432"|g' docker-compose.yml
2.3 添加插件共享 Volume

确保所有服务(api, master, worker, alert)都包含以下 volume 配置:

yaml 复制代码
volumes:
  - dolphinscheduler-logs:/opt/dolphinscheduler/logs
  - dolphinscheduler-plugins:/opt/dolphinscheduler/plugins
  - dolphinscheduler-shared-local:/opt/soft
  - dolphinscheduler-resource-local:/dolphinscheduler

在文件末尾的 volumes 部分添加:

yaml 复制代码
volumes:
  dolphinscheduler-postgresql:
  dolphinscheduler-zookeeper:
  dolphinscheduler-worker-data:
  dolphinscheduler-logs:
  dolphinscheduler-plugins:
  dolphinscheduler-shared-local:
  dolphinscheduler-resource-local:

步骤 3:初始化数据库 Schema

bash 复制代码
# 执行 schema 初始化
docker-compose --profile schema up -d

# 等待初始化完成(约 30 秒)
sleep 30

# 验证 schema 初始化容器状态
docker-compose --profile schema ps

# 查看初始化日志(确认成功)
docker logs docker-dolphinscheduler-schema-initializer-1 2>&1 | tail -20

预期输出应包含:init DolphinScheduler finished

步骤 4:启动所有 DolphinScheduler 服务

bash 复制代码
# 启动所有服务
docker-compose --profile all up -d

# 等待服务启动(约 60 秒)
sleep 60

# 验证服务状态
docker ps --filter "name=dolphinscheduler" --format "table {{.Names}}\t{{.Status}}"

预期所有容器状态为 healthyUp

步骤 5:安装 Plugins 插件

5.1 修改插件配置文件
bash 复制代码
# 进入 master 容器
docker exec -it docker-dolphinscheduler-master-1 bash

# 备份原始插件配置
cp /opt/dolphinscheduler/conf/plugins_config /opt/dolphinscheduler/conf/plugins_config_bak

# 编辑插件配置文件,只保留基本插件
cat > /opt/dolphinscheduler/conf/plugins_config << 'EOF'
# DolphinScheduler Plugins Configuration
# Basic plugins for common usage

# 告警插件
--alert-plugins--
dolphinscheduler-alert-email
dolphinscheduler-alert-dingtalk
--end--

# 数据源插件
--datasource-plugins--
dolphinscheduler-datasource-mysql
dolphinscheduler-datasource-postgresql
--end--

# 存储插件
--storage-plugins--
dolphinscheduler-storage-hdfs
dolphinscheduler-storage-s3
--end--

# 任务插件(最常用)
--task-plugins--
dolphinscheduler-task-shell
dolphinscheduler-task-sql
dolphinscheduler-task-http
dolphinscheduler-task-python
dolphinscheduler-task-java
dolphinscheduler-task-procedure
--end--
EOF

# 验证配置
cat /opt/dolphinscheduler/conf/plugins_config
5.2 执行插件安装脚本
bash 复制代码
# 在 master 容器中执行
cd /opt/dolphinscheduler
./bin/install-plugins.sh 3.4.1

安装过程约需 5-10 分钟,会看到类似输出:

复制代码
Install Dolphinscheduler plugins, usage version is 3.4.1
installing plugin: dolphinscheduler-alert-email
installing plugin: dolphinscheduler-alert-dingtalk
installing plugin: dolphinscheduler-datasource-mysql
...
5.3 验证插件安装
bash 复制代码
# 检查插件目录
ls -la /opt/dolphinscheduler/plugins/

# 应该看到以下目录:
# alert-plugins/
# datasource-plugins/
# storage-plugins/
# task-plugins/

# 检查任务插件
ls -la /opt/dolphinscheduler/plugins/task-plugins/
5.4 退出容器
bash 复制代码
exit

步骤 6:修改 Worker 容器配置(启用 default 租户)

bash 复制代码
# 进入 worker 容器
docker exec -it docker-dolphinscheduler-worker-1 bash

# 备份原始配置
cp /opt/dolphinscheduler/worker-server/conf/application.yaml /opt/dolphinscheduler/worker-server/conf/application.yaml.bak

# 修改 tenant-config 配置
sed -i 's/default-tenant-enabled: false/default-tenant-enabled: true/g' /opt/dolphinscheduler/worker-server/conf/application.yaml

# 验证修改
grep -A 2 "tenant-config" /opt/dolphinscheduler/worker-server/conf/application.yaml

预期输出:

yaml 复制代码
tenant-config:
  auto-create-tenant-enabled: true
  default-tenant-enabled: true
bash 复制代码
# 退出容器
exit

步骤 7:重启所有 DolphinScheduler 服务

bash 复制代码
# 返回部署目录
cd /root/dolphinscheduler/docker_deployment/apache-dolphinscheduler-3.4.1-src/deploy/docker

# 重启所有服务
docker-compose --profile all restart dolphinscheduler-master dolphinscheduler-worker dolphinscheduler-api dolphinscheduler-alert

# 等待服务重启(约 60 秒)
sleep 60

# 验证服务状态
docker ps --filter "name=dolphinscheduler" --format "table {{.Names}}\t{{.Status}}"

预期所有容器状态为 healthy

步骤 8:验证部署

8.1 检查服务健康状态
bash 复制代码
docker ps --filter "name=dolphinscheduler" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
8.2 检查插件加载日志
bash 复制代码
# 检查 Master 容器插件加载
docker logs docker-dolphinscheduler-master-1 2>&1 | grep "Success register task plugin"

# 应该看到:
# Success register task plugin: SHELL
# Success register task plugin: HTTP
# Success register task plugin: SQL
# ...
8.3 访问 Web UI
bash 复制代码
# 检查 API 容器端口
docker port docker-dolphinscheduler-api-1

# 访问地址:http://<服务器 IP>:12345/dolphinscheduler
# 默认账号:admin / dolphinscheduler123

故障排查

问题 1:容器无法启动

bash 复制代码
# 查看容器日志
docker logs docker-dolphinscheduler-api-1 2>&1 | tail -50

# 检查端口占用
netstat -tlnp | grep 12345

问题 2:插件未加载

bash 复制代码
# 检查插件目录
docker exec docker-dolphinscheduler-master-1 ls -la /opt/dolphinscheduler/plugins/

# 重新安装插件
docker exec -it docker-dolphinscheduler-master-1 /opt/dolphinscheduler/bin/install-plugins.sh 3.4.1

问题 3:租户配置问题

bash 复制代码
# 检查 Worker 配置
docker exec docker-dolphinscheduler-worker-1 grep -A 2 "tenant-config" /opt/dolphinscheduler/worker-server/conf/application.yaml

# 确保 default-tenant-enabled: true

问题 4:数据库连接失败

bash 复制代码
# 检查 PostgreSQL 容器状态
docker ps --filter "name=postgresql"

# 检查数据库日志
docker logs docker-dolphinscheduler-postgresql-1 2>&1 | tail -30

清理卸载

bash 复制代码
# 停止所有服务
cd /root/dolphinscheduler/docker_deployment/apache-dolphinscheduler-3.4.1-src/deploy/docker
docker-compose --profile all down

# 删除数据卷(谨慎操作,会删除所有数据)
docker-compose --profile all down -v

# 删除镜像
docker rmi apache/dolphinscheduler-master:3.4.1
docker rmi apache/dolphinscheduler-worker:3.4.1
docker rmi apache/dolphinscheduler-api:3.4.1
docker rmi apache/dolphinscheduler-alert-server:3.4.1
docker rmi postgres:15
docker rmi zookeeper:3.7

参考文档

相关推荐
无限进步_2 小时前
【Linux】gcc/g++ 编译:从源码到可执行文件的四个阶段
linux·运维·服务器
DianSan_ERP10 小时前
如何通过抖店订单接口实现订单状态管理与履约自动化?
运维·自动化
亚空间仓鼠10 小时前
Docker容器化高可用架构部署方案(六)
docker·容器·架构
b***251110 小时前
18650电池点焊机:电阻焊技术如何决定电池组的成败|深圳比斯特自动化
运维·自动化
原来是猿10 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
前端老曹11 小时前
Docker 从入门到放弃:完整指南
运维·docker·容器
AOwhisky11 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术
咖啡里的茶i12 小时前
在Docker环境中安装Hadoop cluster 实验报告一
hadoop·docker·容器
汪汪大队u12 小时前
续:从 Docker Compose 到 Kubernetes(2)—— 服务优化与排错
网络·后端·物联网·struts·容器