Import aus Monorepo (frischer Start)
All checks were successful
Build & Deploy / deploy (push) Successful in 10s
All checks were successful
Build & Deploy / deploy (push) Successful in 10s
This commit is contained in:
41
docker-compose.yml
Normal file
41
docker-compose.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user