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

张开发
2026/4/16 4:47:43 15 分钟阅读

分享文章

别再手动部署了!用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 环境准备清单开始前请确保满足以下条件已安装Docker Engine版本≥20.10已安装Docker Compose版本≥v2.17系统内存≥4GBMasterWorker至少需要1GB内存磁盘空间≥5GB主要占用来自MySQL数据验证环境是否就绪docker version --format {{.Server.Version}} docker compose version2.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 21; 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.sh2.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/tcp3. 常见问题速查手册3.1 端口冲突解决方案如果遇到端口冲突特别是3306和2181可以通过以下方式解决修改docker-compose.yml中的ports配置mysql: ports: - 3307:3306 # 主机端口:容器端口同时需要修改dolphinscheduler-master的环境变量environment: DATABASE_PORT: 3306 # 保持容器端口不变3.2 内存不足处理默认配置下Master和Worker各分配512MB内存。如需调整dolphinscheduler-master: environment: DOLPHINSCHEDULER_OPTS: -Xms1g -Xmx2g3.3 登录失败排查步骤如果无法用默认密码登录进入MySQL容器docker exec -it ds-mysql-1 mysql -uroot -pdolphinscheduler执行SQL查询USE dolphinscheduler; SELECT user_name, user_password FROM t_ds_user;如果密码显示为加密字符串可以重置UPDATE t_ds_user SET user_passworda3caed36f0fe5a01e5f144db8927235e WHERE user_nameadmin;重置后密码变为dolphinscheduler1234. 进阶配置技巧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/logs4.2 邮件告警配置修改master环境变量environment: ALERT_SERVER_ENABLE: true MAIL_SERVER_HOST: smtp.example.com MAIL_SERVER_PORT: 465 MAIL_SENDER: noreplyexample.com MAIL_USER: your_account MAIL_PASSWD: your_password MAIL_SMTP_SSL: true4.3 数据持久化方案默认配置已使用命名卷持久化数据如需指定主机目录volumes: mysql_data: driver_opts: type: none device: /path/to/mysql/data o: bind5. 日常维护命令集5.1 服务启停# 停止服务保留数据 docker compose stop # 启动服务 docker compose start # 彻底删除会清除数据 docker compose down -v5.2 日志查看# 查看master日志 docker compose logs -f dolphinscheduler-master # 查看worker日志 docker compose logs -f dolphinscheduler-worker # 查看MySQL日志 docker compose logs -f mysql5.3 备份恢复备份数据库docker exec ds-mysql-1 mysqldump -uroot -pdolphinscheduler dolphinscheduler backup.sql恢复数据库docker exec -i ds-mysql-1 mysql -uroot -pdolphinscheduler dolphinscheduler backup.sql

更多文章