news 2026/4/17 17:59:06

别再手动部署了!用Docker Compose 5分钟搞定DolphinScheduler 3.x集群(附一键脚本)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再手动部署了!用Docker Compose 5分钟搞定DolphinScheduler 3.x集群(附一键脚本)

5分钟极速部署DolphinScheduler集群:Docker Compose实战指南

每次看到同事花半天时间手动部署DolphinScheduler集群,我都忍不住想——这都2023年了,为什么还有人用石器时代的方法?作为一款分布式任务调度系统,DolphinScheduler的容器化部署早已成熟。今天我要分享的这套方案,不仅能让你在咖啡还没凉透的时间里完成集群搭建,还附赠一键启停脚本和避坑指南。

1. 为什么选择Docker Compose部署?

传统部署方式需要分别安装MySQL、ZooKeeper、Master节点和Worker节点,光是环境准备就能耗掉一上午。而Docker Compose方案将整个部署过程压缩到几个简单步骤:

  • 环境隔离:所有服务运行在独立容器中,不会污染主机环境
  • 版本可控:每个组件版本明确定义在YAML文件中
  • 一键启停:无需记忆复杂命令,开发测试两相宜
  • 快速重置:测试数据有问题?删除容器瞬间恢复初始状态

提示:本方案特别适合快速搭建测试环境,生产环境部署建议参考官方HA方案

2. 五分钟部署实战

2.1 环境准备清单

开始前请确保满足以下条件:

  1. 已安装Docker Engine(版本≥20.10)
  2. 已安装Docker Compose(版本≥v2.17)
  3. 系统内存≥4GB(Master+Worker至少需要1GB内存)
  4. 磁盘空间≥5GB(主要占用来自MySQL数据)

验证环境是否就绪:

docker version --format '{{.Server.Version}}' docker compose version

2.2 获取优化版Compose配置

官方提供的docker-compose.yml存在几个小问题(比如MySQL字符集未设置),我准备了优化版本:

version: '3.8' services: zookeeper: image: zookeeper:3.8 ports: - "2181:2181" healthcheck: test: ["CMD", "zkServer.sh", "status"] mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: dolphinscheduler MYSQL_DATABASE: dolphinscheduler MYSQL_CHARACTER_SET_SERVER: utf8mb4 MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] dolphinscheduler-master: image: apache/dolphinscheduler:3.2.0 depends_on: mysql: condition: service_healthy zookeeper: condition: service_healthy environment: DATABASE_HOST: mysql DATABASE_PORT: 3306 DATABASE_USERNAME: root DATABASE_PASSWORD: dolphinscheduler SPRING_DATASOURCE_HIKARI_CONNECTION_TIMEOUT: 60000 ports: - "12345:12345" volumes: - master_logs:/opt/dolphinscheduler/logs dolphinscheduler-worker: image: apache/dolphinscheduler:3.2.0 depends_on: dolphinscheduler-master: condition: service_started environment: MASTER_HOST: dolphinscheduler-master MASTER_PORT: 5678 volumes: - worker_logs:/opt/dolphinscheduler/logs volumes: mysql_data: master_logs: worker_logs:

关键优化点:

  • 增加健康检查确保服务依赖顺序
  • 使用MySQL 8.0并正确配置UTF8MB4字符集
  • 显式声明数据卷防止容器重启数据丢失
  • 调整连接超时避免启动时数据库连接失败

2.3 一键启动脚本

创建start-ds.sh文件:

#!/bin/bash # 检查Docker是否运行 if ! docker info >/dev/null 2>&1; then echo "Docker未运行,请先启动Docker服务" exit 1 fi # 创建专属网络 docker network create ds-net 2>/dev/null || true # 启动服务 docker compose up -d # 等待服务就绪 echo "等待服务初始化(约60秒)..." sleep 60 # 显示访问信息 echo -e "\n访问地址: http://localhost:12345" echo "初始账号: admin/dolphinscheduler123"

给脚本添加执行权限:

chmod +x start-ds.sh

2.4 系统状态检查

启动后执行以下命令验证各服务状态:

docker compose ps

正常输出应类似:

NAME COMMAND SERVICE STATUS PORTS ds-dolphinscheduler-master-1 "/bin/sh -c 'bash /…" dolphinscheduler-master running 0.0.0.0:12345->12345/tcp ds-dolphinscheduler-worker-1 "/bin/sh -c 'bash /…" dolphinscheduler-worker running ds-mysql-1 "docker-entrypoint.s…" mysql running 0.0.0.0:3306->3306/tcp ds-zookeeper-1 "/docker-entrypoint.…" zookeeper running 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp

3. 常见问题速查手册

3.1 端口冲突解决方案

如果遇到端口冲突(特别是3306和2181),可以通过以下方式解决:

  1. 修改docker-compose.yml中的ports配置:
    mysql: ports: - "3307:3306" # 主机端口:容器端口
  2. 同时需要修改dolphinscheduler-master的环境变量:
    environment: DATABASE_PORT: 3306 # 保持容器端口不变

3.2 内存不足处理

默认配置下,Master和Worker各分配512MB内存。如需调整:

dolphinscheduler-master: environment: DOLPHINSCHEDULER_OPTS: "-Xms1g -Xmx2g"

3.3 登录失败排查步骤

如果无法用默认密码登录:

  1. 进入MySQL容器:
    docker exec -it ds-mysql-1 mysql -uroot -pdolphinscheduler
  2. 执行SQL查询:
    USE dolphinscheduler; SELECT user_name, user_password FROM t_ds_user;
  3. 如果密码显示为加密字符串,可以重置:
    UPDATE t_ds_user SET user_password='a3caed36f0fe5a01e5f144db8927235e' WHERE user_name='admin';
    重置后密码变为:dolphinscheduler123

4. 进阶配置技巧

4.1 多Worker节点部署

只需在compose文件中添加worker服务定义:

dolphinscheduler-worker-2: image: apache/dolphinscheduler:3.2.0 depends_on: dolphinscheduler-master: condition: service_started environment: MASTER_HOST: dolphinscheduler-master MASTER_PORT: 5678 volumes: - worker_logs_2:/opt/dolphinscheduler/logs

4.2 邮件告警配置

修改master环境变量:

environment: ALERT_SERVER_ENABLE: "true" MAIL_SERVER_HOST: "smtp.example.com" MAIL_SERVER_PORT: "465" MAIL_SENDER: "noreply@example.com" MAIL_USER: "your_account" MAIL_PASSWD: "your_password" MAIL_SMTP_SSL: "true"

4.3 数据持久化方案

默认配置已使用命名卷持久化数据,如需指定主机目录:

volumes: mysql_data: driver_opts: type: none device: /path/to/mysql/data o: bind

5. 日常维护命令集

5.1 服务启停

# 停止服务(保留数据) docker compose stop # 启动服务 docker compose start # 彻底删除(会清除数据!) docker compose down -v

5.2 日志查看

# 查看master日志 docker compose logs -f dolphinscheduler-master # 查看worker日志 docker compose logs -f dolphinscheduler-worker # 查看MySQL日志 docker compose logs -f mysql

5.3 备份恢复

备份数据库:

docker exec ds-mysql-1 mysqldump -uroot -pdolphinscheduler dolphinscheduler > backup.sql

恢复数据库:

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

MinIO的原理及使用介绍

初识对象存储MinIO 初识对象存储MinIO - 墨天轮 ## 基于minIO建立对象存储服务 搭建高可用集群 探索横向扩展可行性 影响性能的关键点和基础性能测试结果 培训minio的数据可靠性解决方案、基本使用方法 承接内部离线镜像、yum源、python源&#xff0c;前端流…

作者头像 李华
网站建设 2026/4/16 4:32:22

Python 模块精讲:platform 获取系统信息,从入门到实战全攻略

前言在 Python 开发领域&#xff0c;无论是编写自动化脚本、开发跨平台应用、实现系统监控工具&#xff0c;还是构建运维自动化平台&#xff0c;获取当前运行环境的系统信息都是一项极为基础且关键的操作。从判断操作系统类型、检测硬件架构&#xff0c;到查看 Python 解释器版…

作者头像 李华
网站建设 2026/4/16 4:31:22

大数据技术复习--大数据感知与获取

引言 数据采集的目标&#xff1a;从指定数据源以不同的数据采集方法采集各类数据ODS&#xff1a;Operational Data Store&#xff0c;操作型数据存储&#xff0c;最接近数据源中数据的一层&#xff0c;用来存储多个数据源业务数据的系统&#xff0c;其数据输入到数据仓库中进行…

作者头像 李华
网站建设 2026/4/16 4:25:33

Bioicons:生物科研插图新革命,免费开源图标库终极指南

Bioicons&#xff1a;生物科研插图新革命&#xff0c;免费开源图标库终极指南 【免费下载链接】bioicons A library of free open source icons for science illustrations in biology and chemistry 项目地址: https://gitcode.com/gh_mirrors/bi/bioicons 你知道吗&am…

作者头像 李华