Der Abgleich liest GExtension-Profile und ist auf deren Seitenaufbau gebaut. Damit niemand in einer anderen Community lange sucht, warum nichts passiert, steht das jetzt als Warnhinweis am Anfang des Abschnitts: bei einer anderen GExtension-Instanz reicht GEXTENSION_BASE_URL, bei einem voellig anderen Shop-System muesste der Parser angepasst werden. Der Rest der App laeuft unabhaengig davon. Die Adresse war bisher fest im Code verdrahtet und kommt jetzt aus der Umgebung. Der Parser selbst bleibt frei von Konfiguration und Datenbank, damit er ohne beides testbar ist - die Adresse reicht der Service durch.
61 lines
1.9 KiB
YAML
61 lines
1.9 KiB
YAML
services:
|
|
app:
|
|
build: .
|
|
# Alternativ ein vorgebautes Image verwenden:
|
|
# image: ghcr.io/harlekin/cc-manager:latest
|
|
restart: unless-stopped
|
|
environment:
|
|
DATABASE_URL: postgres://ccuser:${DB_PASSWORD}@db:5432/ccmanager
|
|
SESSION_SECRET: ${SESSION_SECRET}
|
|
NODE_ENV: production
|
|
# Erstzugang; nach der ersten Anmeldung wird ein Wechsel erzwungen.
|
|
BOOTSTRAP_ADMIN_USER: ${BOOTSTRAP_ADMIN_USER:-admin}
|
|
BOOTSTRAP_ADMIN_PASSWORD: ${BOOTSTRAP_ADMIN_PASSWORD:-}
|
|
TRUST_PROXY: "true"
|
|
# Nur noetig, wenn der GExtension-Abgleich eine andere Instanz ansprechen soll.
|
|
GEXTENSION_BASE_URL: ${GEXTENSION_BASE_URL:-https://gextension.senseigaming.de}
|
|
AUDIT_RETENTION_DAYS: ${AUDIT_RETENTION_DAYS:-365}
|
|
expose:
|
|
# Bewusst nicht nach aussen gemappt: der Reverse Proxy terminiert HTTPS.
|
|
- "3000"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ccuser
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
POSTGRES_DB: ccmanager
|
|
volumes:
|
|
- cc_db:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ccuser -d ccmanager"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
backup:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
PGPASSWORD: ${DB_PASSWORD}
|
|
volumes:
|
|
- ./backups:/backups
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
# Dump beim Start und danach alle 24 Stunden, Aufbewahrung 14 Tage.
|
|
entrypoint: >
|
|
sh -c 'while true; do
|
|
pg_dump -h db -U ccuser -d ccmanager | gzip > /backups/ccmanager-$$(date +%F-%H%M).sql.gz &&
|
|
echo "Backup geschrieben: $$(date +%F-%H%M)";
|
|
find /backups -name "ccmanager-*.sql.gz" -mtime +14 -delete;
|
|
sleep 86400;
|
|
done'
|
|
|
|
volumes:
|
|
cc_db:
|