当前位置: 首页 > news >正文

别再手动部署了!用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
http://www.jsqmd.com/news/648394/

相关文章:

  • 全额与净额结算的实战对比与选择策略
  • 电力线路自动准同期检测装置电气控制部分优化设计研究
  • 【软件工程】结构化分析方法实战:从数据流图到系统设计
  • dblink vs postgres_fdw终极对比:你的PostgreSQL跨库方案选对了吗?
  • Multisim 14.0 仿真高频丙类功放:从波形失真看工作状态切换(附实验文件)
  • 【工具篇】VSCode护眼色主题定制指南:从安装到个性化配置
  • C语言到底有多强大?
  • 别再只用USB了!鸿蒙HarmonyOS 4.0无线调试保姆级教程,告别数据线束缚
  • Qwen3-14B镜像参数详解:max_length/temperature等推理调优指南
  • GeoServer发布多波段IMG影像去黑边的3种实战方法(附SLD代码)
  • JS逆向实战 - 数美滑块验证码的协议破解与自动化对抗
  • JAVA低空经济无人机飞手接单小程序源码(UniApp实现)
  • 避免Gitee克隆失败:git exit code 1报错的预防与解决方案全攻略
  • ESP32C3内置的USB串口/JTAG,除了省个芯片还能怎么玩?
  • Android 10 Gnss数据流程:从LocationManager到HAL层的深度解析
  • SystemView和Simulink选哪个?实测对比2ASK相干/非相干解调的仿真效率与结果
  • 2026年口碑好的履带式抛丸机/大丰通过式抛丸机/辊道抛丸机/悬挂抛丸机优质公司推荐 - 品牌宣传支持者
  • React 性能优化的五个方向
  • 从SYSTICK到ADC:给STM32F1/F0系列MCU的三种随机数生成方案实测与避坑指南
  • 基于3D分子结构的铃木反应催化作用预测系统
  • 告别仿真玩具:用HighD、NGSIM等真实车辆轨迹数据集,给你的自动驾驶模型“喂”点硬核数据
  • VCS(DVE)仿真波形管理:.vpd与.vpd.tcl文件的协同使用技巧
  • 从理论到仿真:用Simulink离散积分器一步步还原电机电流环PI控制(附模型文件)
  • PyTorch实战:手把手教你构建BERT模型的Masked LM与NSP任务
  • 实战数据安全:当落盘加密遇上MPC,构建“可用不可得”的隐私计算体系
  • 别再对着I2C设备发愁了!用i2ctools(i2cdetect/dump/get/set)5分钟搞定硬件调试
  • VSCode + Qt + Clangd 三件套配置实录:我如何把C++开发体验提升了一个档次
  • RuoYi框架国产化迁移实战:SpringBoot项目适配达梦数据库的关键步骤与避坑指南
  • Ansible之Playbook(三):变量应用
  • STM32F103C8T6驱动W25Q128闪存实战:从GPIO模拟SPI到数据备份防误擦