gwoe-antragspruefer/docker-compose.yml
Dotty Dotter f4b7b000a1 Graceful Shutdown v2: Queue sperren + nur laufende Jobs abwarten
- _shutting_down Flag: sperrt enqueue() bei Shutdown → User bekommt
  "Server wird neu gestartet" statt stilles Einreihen in tote Queue
- graceful_shutdown wartet NUR auf processing-Jobs (nicht ganze Queue)
- Queued-Jobs bleiben in DB als stale → User kann nach Restart re-triggern
- Timeout 15 min (900s) — ein LLM-Call dauert max ~120s
- stop_grace_period: 15m in docker-compose
- get_queue_status() meldet shutting_down für UI-Feedback
2026-04-10 23:20:23 +02:00

47 lines
1.6 KiB
YAML

services:
gwoe-antragspruefer:
build: .
container_name: gwoe-antragspruefer
restart: unless-stopped
stop_grace_period: 15m # Laufende LLM-Jobs zu Ende laufen lassen
environment:
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY}
- KEYCLOAK_URL=https://sso.toppyr.de
- KEYCLOAK_REALM=collaboration
- KEYCLOAK_CLIENT_ID=gwoe-antragspruefer
volumes:
- ./data:/app/data
- ./reports:/app/reports
labels:
- "traefik.enable=true"
- "traefik.http.routers.gwoe.rule=Host(`gwoe.toppyr.de`)"
- "traefik.http.routers.gwoe.entrypoints=websecure"
- "traefik.http.routers.gwoe.tls=true"
- "traefik.http.routers.gwoe.tls.certresolver=letsencrypt"
- "traefik.http.services.gwoe.loadbalancer.server.port=8000"
networks:
- collaboration_collaboration
# Doku-Hosting (#62 Phase 2): mkdocs-Output als statische Site.
# URL: https://docs.toppyr.de/gwoe-antragspruefer/
# Update: mkdocs build && scp -r site/* vserver:/opt/gwoe-antragspruefer/docs-site/
gwoe-docs:
image: nginx:alpine
container_name: gwoe-docs
restart: unless-stopped
volumes:
- ./docs-site:/usr/share/nginx/html/gwoe-antragspruefer:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.gwoe-docs.rule=Host(`docs.toppyr.de`)"
- "traefik.http.routers.gwoe-docs.entrypoints=websecure"
- "traefik.http.routers.gwoe-docs.tls=true"
- "traefik.http.routers.gwoe-docs.tls.certresolver=letsencrypt"
- "traefik.http.services.gwoe-docs.loadbalancer.server.port=80"
networks:
- collaboration_collaboration
networks:
collaboration_collaboration:
external: true