Files
skrift-backend/docker-compose.yml
Lucas Orth 0ddaab27d0
All checks were successful
Build & Deploy / deploy (push) Successful in 10s
Import aus Monorepo (frischer Start)
2026-08-24 12:13:50 +02:00

42 lines
1.5 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Auto-Deploy per Tag-Push – siehe DEPLOY.md. Fester Projekt-/Container-Name,
# Image mit Versionstag (Rollback ohne Rebuild), kein Port-Mapping (NPM proxyt
# intern über den Container-Namen).
name: skrift-backend
services:
app:
image: skrift-backend:${IMAGE_TAG:-latest}
build: .
container_name: skrift-backend
restart: unless-stopped
# Betriebs-Defaults inline; Secrets/Config kommen aus .env (Secret DOTENV).
environment:
- NODE_ENV=production
- PORT=4000
env_file: .env
volumes:
# Fonts sind ins Image gebacken (COPY im Dockerfile) – kein Bind nötig.
- skrift-backend-cache:/app/cache
# Gemeinsamer Ausgabe-/SFTP-Ordner: ABSOLUTER Host-Pfad, bewusst KEIN named
# volume – Directus liest ihn (ro) und er ist das SFTP-Ziel der Produktion.
- /var/skrift-output:/app/output
networks:
- nginx-proxy-manager_default
# Gate für `--wait`. /health liefert 503, wenn Scriptalizer-Key fehlt oder
# der Output-Ordner nicht schreibbar ist – dann bricht der Deploy bewusst ab.
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://127.0.0.1:4000/health',r=>process.exit(r.statusCode===200?0:1)).on('error',()=>process.exit(1))"]
interval: 60s
timeout: 5s
retries: 3
networks:
nginx-proxy-manager_default:
external: true
volumes:
# Vorschau-Cache (regenerierbar) mit festem Namen, damit er nicht am
# Projektnamen hängt.
skrift-backend-cache:
name: skrift-backend-cache