act_runner spawns an ephemeral container per job; the default image
lacks the docker CLI and cannot reach the host's Docker daemon. Use
the official docker:27-cli image and bind-mount /var/run/docker.sock
so docker build/push target the host engine.
Requires runner config.yaml to include /var/run/docker.sock in
container.valid_volumes; otherwise the mount is rejected.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Avoids needing to configure REGISTRY_USER / REGISTRY_PASSWORD secrets.
Gitea injects a per-run token scoped to the repo's own packages.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- public/index.html served via nginx.conf (port 8080)
- Dockerfile: nginx:1.27-alpine + HEALTHCHECK
- .gitea/workflows/flow.yml: build + push to Gitea registry, rolling deploy
- stack.yml: Swarm service wired to Traefik (host testwebsite.dev.serso.org)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>