Dagu:自托管工作流编排引擎
单二进制、无需数据库的自托管工作流编排引擎,用 YAML 把已有脚本、容器和 SSH 命令编排成带调度与重试的 DAG。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v2.24.0
- 平台
- Windows、macOS、Linux
详细介绍
项目简介
Dagu 是一个面向「主业不是做编排」的团队的开源工作流引擎。它把工作流的结构当作配置而不是代码:顺序、依赖、重试、调度、人工任务都写在一个 YAML 文件里,放在你已有的脚本旁边;真正干活的仍然是你的 shell 命令、Docker 容器、Kubernetes Job 或 SSH 远程命令。
它是一个单二进制程序,内置 Web UI,不需要外部数据库或消息队列,可运行在 Linux、macOS、Windows 上,从单机扩展到多 worker。脚本本身不 import 任何框架,删掉 YAML 仍可照常运行;保留 YAML,每次运行就多了依赖图、重试、分步日志、历史记录和 Web 界面。定位上可作为 Airflow / cron / 作业调度器的替代方案。
主要功能
- 声明式 YAML 定义 DAG:用 YAML 描述步骤、依赖与执行顺序,工作流与业务逻辑分离。
- 复用现有执行方式:直接运行现有 shell 命令、Docker 容器、Kubernetes Job,以及通过 SSH 执行的远程命令,无需改造脚本。
- 组合与并发:可复用的 Sub-DAG,配合并发控制并行执行任务。
- 调度能力:cron 语法、时区、重叠策略与补跑窗口。
- 运行保障:日志、运行历史、重试、通知、Webhook 触发集中在一处。
- 内置 MCP server:用于查看工作流与运行、维护 Wiki 页面、应用变更和控制运行。
- 部署形态灵活:单机运行、按次创建的临时 worker,或多机分布式 worker;同份 YAML 在任意形态下都能跑。
- Dagu Console 可选监控:集中查看各服务器的运行与趋势,工作流失败或服务器失联时发邮件;仅出站 HTTPS、仅上报元数据。
- 自带 Web UI 与 API:安装后即可在浏览器中管理 DAG、查看运行详情与步骤日志,并提供 CLI 和 HTTP API。
安装与使用
macOS / Linux 脚本安装:
curl -fsSL https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.sh | bash
Homebrew:
brew install dagu
npm:
npm install -g --ignore-scripts=false @dagucloud/dagu
Windows(PowerShell):
irm https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.ps1 | iex
Docker:
docker run --rm -v ~/.dagu:/var/lib/dagu -p 8080:8080 ghcr.io/dagucloud/dagu:latest dagu start-all
Kubernetes(Helm):
helm repo add dagu https://dagucloud.github.io/dagu
helm repo update
helm install dagu dagu/dagu --set persistence.storageClass=<your-rwx-storage-class>
脚本安装方式会启动引导向导,可将 Dagu 加入 PATH、配置为后台服务并创建初始管理员账号;Homebrew、npm、Docker、Helm 安装不带向导。
创建并运行一个工作流,在空目录下新建 hello.yaml:
steps:
- id: hello
run: echo "hello from Dagu"
执行:
dagu start hello.yaml
启动服务器,在同一目录下执行:
dagu start-all --dags .
然后打开 http://localhost:8080 ,首次启动时创建管理员账号(若安装向导已创建则跳过)。若安装脚本已把 Dagu 设为后台服务,它已经在 8080 端口运行,直接在 UI 中添加工作流,或把 hello.yaml 放到安装程序提示的 DAGs 目录。
还可以直接体验在线 Demo:https://dagu-demo-f5e33d0e.dagu.sh (用户名/密码:demouser)。
注意事项
- 使用 Docker 方式运行时,该命令不会把宿主机的 Docker daemon 暴露给 Dagu;工作流中若使用
container:或action: docker.run,需要按文档完成额外的容器步骤 Docker 配置。 - 挂载 Docker socket 等于授予工作流控制宿主机 daemon 的权限,请谨慎评估。
- Helm 安装时需把
<your-rwx-storage-class>替换为支持ReadWriteMany的 StorageClass,更多参数见charts/dagu/README.md。 - Dagu Console 监控为可选功能,只通过出站 HTTPS 上报元数据,日志、输出与密钥仍留在各自服务器上。
- 项目使用 GPL-3.0 许可证。
本作品整理自 GitHub 开源项目 dagucloud/dagu,原作者 @dagucloud,许可证 GPL-3.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v2.24.0当前版本
foreach 缺少命名空间的字段会报错;记录并展示每个步骤的模型用量(含缓存 token、推理与成本);浏览器写操作新增写入门控与提交前确认,并记录已批准的写入;模型步骤可用提示读取文件;监视文件夹中新到的文件各触发一次运行;另有多项 Windows 测试与界面修复。
评论