ci: migrate to Portainer Git stack + registry-pushed images
Some checks failed
Deploy / deploy (push) Failing after 29s

- Compose: build → image (Gitea registry ci namespace) for backend + frontend
- Workflow: build + push both + POST Portainer webhook (3-attempt retry)
- Drop docker compose up on host
- Add crowdsec@file to middlewares chain

Repo secrets required: REGISTRY_TOKEN, PORTAINER_WEBHOOK_URL.
Rollback branch: pre-portainer-migration.
This commit is contained in:
2026-06-20 12:30:35 +02:00
parent 5c65e4d2ee
commit 3c8aab4cc5
2 changed files with 45 additions and 46 deletions

View File

@@ -1,10 +1,8 @@
name: flight-radar # pins the project name — must match COMPOSE_PROJECT in .gitea/workflows/deploy.yml
name: flight-radar
services:
backend:
build:
context: .
dockerfile: Dockerfile.backend
image: git.domverse-berlin.eu/ci/ciaovolo/backend:${TAG:-latest}
container_name: flight-radar-backend
restart: unless-stopped
environment:
@@ -16,37 +14,31 @@ services:
networks:
- default
- domverse
# No ports exposed — only reachable by the frontend via nginx proxy
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
image: git.domverse-berlin.eu/ci/ciaovolo/frontend:${TAG:-latest}
container_name: flight-radar-frontend
restart: unless-stopped
depends_on:
- backend
networks:
- default # shares default compose network with backend (nginx → http://backend:8000)
- domverse # Traefik discovers the container on this network
- default
- domverse
labels:
# Traefik routing
- "traefik.docker.network=domverse"
- "traefik.enable=true"
- "traefik.http.routers.flight-radar.rule=Host(`flights.domverse-berlin.eu`)"
- "traefik.http.routers.flight-radar.entrypoints=https"
- "traefik.http.routers.flight-radar.tls.certresolver=http"
- "traefik.http.routers.flight-radar.middlewares=authentik@docker"
- "traefik.http.routers.flight-radar.middlewares=crowdsec@file,authentik@docker"
- "traefik.http.services.flight-radar.loadbalancer.server.port=80"
# AutoKuma monitoring
- "kuma.flight-radar.http.name=Flight Radar"
- "kuma.flight-radar.http.url=https://flights.domverse-berlin.eu"
- "kuma.flight-radar.http.interval=60"
- "kuma.flight-radar.http.max_retries=2"
- "kuma.flight-radar.http.retry_interval=60"
# Homepage dashboard
- "homepage.group=Productivity"
- "homepage.name=Flight Radar"
- "homepage.icon=mdi-airplane"
@@ -59,6 +51,6 @@ volumes:
driver: local
networks:
default: {} # explicit declaration required when any service has a custom networks block
default: {}
domverse:
external: true