services: gitea-runner: build: context: . dockerfile: Dockerfile image: gitea-act-runner:local container_name: gitea-runner restart: unless-stopped environment: GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:?Set GITEA_INSTANCE_URL in .env} GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:?Set GITEA_RUNNER_REGISTRATION_TOKEN in .env} GITEA_RUNNER_NAME: ${GITEA_RUNNER_NAME:-recipe-app} GITEA_RUNNER_LABELS: ${GITEA_RUNNER_LABELS:-backend-node24:docker://node:24.15.0-bullseye,flutter-3-41:docker://recipe-flutter-ci:3.41-node24} volumes: - runner-data:/data - /var/run/docker.sock:/var/run/docker.sock security_opt: - no-new-privileges:true tmpfs: - /tmp logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "pgrep -x act_runner > /dev/null || exit 1"] interval: 30s timeout: 10s retries: 3 start_period: 20s networks: - runner-network volumes: runner-data: networks: runner-network: driver: bridge