# docker-compose.yml — GitHub Actions self-hosted runner orchestration. # # All configuration is injected via environment files: # - .env → shared config (GITHUB_PAT) # - envs/augur.env → per-repo config (identity, labels, resource limits) # # Quick start: # cp .env.example .env && cp envs/augur.env.example envs/augur.env # # Edit both files with your values # docker compose up -d # # To add another repo: copy envs/augur.env.example to envs/.env, # fill in values, and add a matching service block below. x-runner-common: &runner-common image: ${RUNNER_IMAGE:-ghcr.io/aiinfuseds/augur-runner:latest} build: . env_file: - .env - envs/augur.env tmpfs: - /tmp:size=2G,exec security_opt: - no-new-privileges:true stop_grace_period: 5m deploy: resources: limits: cpus: "${RUNNER_CPUS:-4}" memory: "${RUNNER_MEMORY:-4G}" restart: unless-stopped healthcheck: test: ["CMD", "pgrep", "-f", "Runner.Listener"] interval: 30s timeout: 5s retries: 3 start_period: 30s logging: driver: json-file options: max-size: "50m" max-file: "3" services: runner-augur-1: <<: *runner-common environment: RUNNER_NAME: unraid-augur-1 volumes: - augur-work-1:/home/runner/_work runner-augur-2: <<: *runner-common environment: RUNNER_NAME: unraid-augur-2 volumes: - augur-work-2:/home/runner/_work runner-augur-3: <<: *runner-common environment: RUNNER_NAME: unraid-augur-3 volumes: - augur-work-3:/home/runner/_work volumes: augur-work-1: augur-work-2: augur-work-3: