From 0c15cea35945709ec2c6f631c76c8d892f6d1750 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Sun, 10 May 2026 16:45:59 -0400 Subject: [PATCH] Adding Dagu stack. --- docker-compose.yml | 83 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 5756537..4b1b98c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,87 @@ services: - beszel-agent-data:/var/lib/beszel-agent - /var/run/docker.sock:/var/run/docker.sock:ro - /dev/mmcblk0:/extra-filesystems/dev/mmcblk0:ro + # Dagu control-plane: Coordinator (gRPC) for distributed workers + dagu-coordinator: + container_name: dagu-coordinator + image: ghcr.io/dagucloud/dagu:latest + command: ["dagu", "coordinator"] + environment: + # Peer config: insecure by default; set TLS envs if needed + DAGU_PEER_INSECURE: true + # Bind and advertise on container IP/DNS so workers can reach it + DAGU_COORDINATOR_HOST: dagu-coordinator + DAGU_COORDINATOR_PORT: 50055 + ports: + - "50055:50055" + volumes: + - dagu-data:/var/lib/dagu + - ${ARANEA_DOCKER_DIR}/dagu/dags:/var/lib/dagu/dags:ro + # Dagu scheduler service (reads DAGs and enqueues runs) + dagu-scheduler: + container_name: dagu-scheduler + image: ghcr.io/dagucloud/dagu:latest + command: ["dagu", "scheduler"] + environment: + - DAGU_COORDINATOR_HOST=dagu-coordinator + - DAGU_COORDINATOR_PORT=50055 + - DAGU_SCHEDULER_PORT=8090 + - DAGU_DAGS_DIR=/var/lib/dagu/dags + # Optional: set timezone, logging, etc + # - DAGU_TZ=UTC + # - DAGU_LOG_FORMAT=json + depends_on: + - dagu-coordinator + ports: + - "8090:8090" # Scheduler health + volumes: + - dagu-data:/var/lib/dagu + - ${ARANEA_DOCKER_DIR}/dagu/dags:/var/lib/dagu/dags:ro + # Dagu web UI / API server + dagu-server: + container_name: dagu-server + image: ghcr.io/dagucloud/dagu:latest + command: ["dagu", "server"] + environment: + DAGU_COORDINATOR_HOST: dagu-coordinator + DAGU_COORDINATOR_PORT: 50055 + DAGU_HOST: 0.0.0.0 + DAGU_PORT: 8080 + DAGU_DAGS_DIR: /var/lib/dagu/dags + # Builtin authentication (RBAC) CHANGE TOKEN_SECRET IN PRODUCTION + DAGU_AUTH_MODE: builtin + # Token secret: auto-generated if not set (persisted to {dataDir}/auth/token_secret) + # DAGU_AUTH_TOKEN_SECRET: your-secure-random-secret + # First admin account created via /setup page on first browser visit + # DAGU_AUTH_TOKEN_TTL: 24h # default is 24h + # If behind a proxy, set base path + # DAGU_BASE_PATH: /dagu + depends_on: + - dagu-scheduler + - dagu-coordinator + ports: + - "8080:8080" + volumes: + - dagu-data:/var/lib/dagu + - ${ARANEA_DOCKER_DIR}/dagu/dags:/var/lib/dagu/dags:ro + # Dagu worker (polls coordinator and executes tasks) + dagu-worker: + container_name: dagu-worker + image: ghcr.io/dagucloud/dagu:latest + command: ["dagu", "worker"] + environment: + DAGU_COORDINATOR_HOST: dagu-coordinator + DAGU_COORDINATOR_PORT: 50055 + # Optional worker tuning and labels + # - DAGU_WORKER_MAX_ACTIVE_RUNS=100 + # - DAGU_WORKER_LABELS=region=us-east-1,instance-type=m5.large + # OTel: point DAGs to collector via per-DAG otel.endpoint: "otel-collector:4317" + depends_on: + - dagu-coordinator + volumes: + - dagu-data:/var/lib/dagu + # Workers typically don't need DAG definitions, but sharing is harmless + - ${ARANEA_DOCKER_DIR}/dagu/dags:/var/lib/dagu/dags:ro docker-socket-proxy: container_name: dockerproxy environment: @@ -84,3 +165,5 @@ services: volumes: beszel-agent-data: name: beszel-agent-data + dagu-data: + name: dagu-data -- 2.52.0