Skip to content
Dagu LogoDagu LogoDagu

面向企业和小型团队的轻量级强大工作流引擎

可部署在本地、云端或物联网设备上。低代码声明式工作流定义,任何人都能理解。

快速开始

在 2 分钟内安装并运行你的第一个工作流。

安装

bash
curl -L https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.sh | bash
bash
docker pull ghcr.io/dagu-org/dagu:latest
bash
brew install dagu-org/brew/dagu

1. 创建工作流

bash
mkdir -p ~/.config/dagu/dags && cat > ~/.config/dagu/dags/hello.yaml << 'EOF'
steps:
  - name: hello
    command: echo "Hello from Dagu!"
    
  - name: world
    command: echo "Running step 2"
EOF
bash
mkdir -p ~/.dagu/dags && cat > ~/.dagu/dags/hello.yaml << 'EOF'
steps:
  - name: hello
    command: echo "Hello from Dagu!"
    
  - name: world
    command: echo "Running step 2"
EOF

2. 运行工作流

bash
dagu start hello
bash
docker run --rm \
  -v ~/.dagu:/var/lib/dagu \
  ghcr.io/dagu-org/dagu:latest \
  dagu start hello

输出:

bash
┌─ DAG: hello ─────────────────────────────────────────────────────┐
 Status: Success           | Started: 23:34:57 | Elapsed: 471ms
└──────────────────────────────────────────────────────────────────┘

Progress: ████████████████████████████████████████ 100% (2/2 steps)

注意:如果你使用 Docker,输出可能有所不同。

:::

3. 检查状态

bash
dagu status hello
bash
docker run --rm \
  -v ~/.dagu:/var/lib/dagu \
  ghcr.io/dagu-org/dagu:latest \
  dagu status hello

4. 启动界面

bash
dagu start-all
bash
docker run -d \
  -p 8080:8080 \
  -v ~/.dagu:/var/lib/dagu \
  ghcr.io/dagu-org/dagu:latest \
  dagu start-all

访问 http://localhost:8080 查看你的工作流。

为什么选择 Dagu?

零依赖

单一二进制文件。无需数据库,无需消息代理。几秒钟内即可部署到任何地方。

语言无关

执行任何命令。你现有的脚本无需修改即可工作。

生产就绪

经过实战考验的错误处理、重试、日志记录和监控。

分层工作流

从小工作流组合成大工作流。构建模块化、可重用的组件。

示例:具有嵌套工作流的数据流水线

yaml
name: etl-pipeline
schedule: "0 2 * * *"  # 每天凌晨 2 点

steps:
  - name: extract
    command: python extract.py --date=${DATE}
    output: RAW_DATA
    
  - name: transform
    run: transform-data
    parallel:
      items: [customers, orders, products]
    params: "TYPE=${ITEM} INPUT=${RAW_DATA}"
    
  - name: load
    command: python load.py
    retryPolicy:
      limit: 3
      intervalSec: 2
      backoff: true      # 指数退避

---
name: transform-data
params: [TYPE, INPUT]
steps:
  - name: process
    command: python transform.py --type=${TYPE} --input=${INPUT}

了解更多

快速开始

安装和第一个工作流

编写工作流

完整的工作流编写指南

YAML 参考

所有配置选项

社区

本站为 Dagu 中文文档。内容基于最新 Dagu 英文文档 翻译。

Dagu 中文文档由 Dagu.dev 维护,致力推动 Dagu 在中文社区的传播与技术交流。

Dagu 项目归属 https://github.com/dagu-org 所有,

本站为 Dagu 中文文档,由 Dagu.dev 基于 Dagu 原版英文文档翻译维护。