# Fester Projektname. Ohne das leitet Compose ihn aus dem Verzeichnisnamen # ab - und der ist im CI-Job ein anderer als auf dem Host. name: __APP__ services: app: # Versionstag ermoeglicht Rollback ohne Rebuild. image: __APP__:${IMAGE_TAG:-latest} build: . # Fester Name: das ist die Adresse, auf die der Proxy zeigt. container_name: __APP__ restart: unless-stopped # Wird im Workflow aus dem Secret DOTENV erzeugt. env_file: .env networks: - nginx-proxy-manager_default # Pflicht: der Deploy-Schritt nutzt --wait und macht das zum Gate. # Auf den Health-Endpoint der App anpassen. healthcheck: test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:__PORT__/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] interval: 60s timeout: 5s retries: 3 # Kein ports-Mapping: Der Proxy erreicht den Container ueber das gemeinsame # Netz unter seinem Container-Namen. networks: nginx-proxy-manager_default: external: true # Persistente Daten nur als named volume mit festem Namen - relative # Bind-Mounts zeigen aus dem Job-Container heraus ins Leere. # volumes: # __APP__-data: # name: __APP__-data