Import aus Monorepo (frischer Start)
This commit is contained in:
108
docker-compose.yml
Normal file
108
docker-compose.yml
Normal file
@@ -0,0 +1,108 @@
|
||||
# Directus + Postgres — Daten-/Auth-/Admin-Schicht für Skrift.
|
||||
#
|
||||
# Hinter dem Nginx Proxy Manager (kein Host-Port; NPM proxyt intern per container_name).
|
||||
# Im NPM als Proxy Host anlegen:
|
||||
# Domain Names : admin.skrift.de (PUBLIC_URL in .env muss dazu passen)
|
||||
# Scheme : http
|
||||
# Forward Hostname : skrift-directus
|
||||
# Forward Port : 8055
|
||||
# SSL : Let's-Encrypt-Zertifikat aktivieren
|
||||
#
|
||||
# Start: cp .env.example .env → Werte setzen → docker compose up -d
|
||||
|
||||
services:
|
||||
database:
|
||||
image: postgres:16-alpine
|
||||
container_name: skrift-directus-db
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- directus-db:/var/lib/postgresql/data
|
||||
environment:
|
||||
POSTGRES_USER: ${DB_USER}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_DB: ${DB_DATABASE}
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "-U", "${DB_USER}", "-d", "${DB_DATABASE}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- internal
|
||||
|
||||
directus:
|
||||
image: directus/directus:11
|
||||
container_name: skrift-directus
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
database:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- directus-uploads:/directus/uploads
|
||||
# Bind-Mount: Extensions kommen aus dem Repo-Ordner ./extensions
|
||||
- ./extensions:/directus/extensions
|
||||
# Generierte Auftragsdateien read-only einblenden (gleicher Ordner wie
|
||||
# das Backend beschreibt / SFTP-Ziel) – für Direktzugriff statt Kopie.
|
||||
- /var/skrift-output:/var/skrift-output:ro
|
||||
environment:
|
||||
SECRET: ${DIRECTUS_SECRET}
|
||||
|
||||
DB_CLIENT: pg
|
||||
DB_HOST: database
|
||||
DB_PORT: 5432
|
||||
DB_DATABASE: ${DB_DATABASE}
|
||||
DB_USER: ${DB_USER}
|
||||
DB_PASSWORD: ${DB_PASSWORD}
|
||||
|
||||
# Erster Admin – wird nur beim allerersten Start angelegt
|
||||
ADMIN_EMAIL: ${ADMIN_EMAIL}
|
||||
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
|
||||
|
||||
PUBLIC_URL: ${PUBLIC_URL}
|
||||
|
||||
# CORS für das Frontend (Portal/Konfigurator)
|
||||
CORS_ENABLED: "true"
|
||||
CORS_ORIGIN: ${CORS_ORIGIN}
|
||||
|
||||
# E-Mail: für passwortlosen Login-Code + Benachrichtigungen (Flows)
|
||||
EMAIL_FROM: ${EMAIL_FROM}
|
||||
EMAIL_TRANSPORT: smtp
|
||||
EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST}
|
||||
EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT}
|
||||
EMAIL_SMTP_USER: ${EMAIL_SMTP_USER}
|
||||
EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD}
|
||||
EMAIL_SMTP_SECURE: ${EMAIL_SMTP_SECURE}
|
||||
|
||||
# Skrift-Backend (SVG-Generierung: Vorschau + finaler Auftrag).
|
||||
# SKRIFT_BACKEND_TOKEN MUSS dem API_TOKEN des Backends entsprechen,
|
||||
# sonst antwortet das Backend mit 401.
|
||||
SKRIFT_BACKEND_URL: ${SKRIFT_BACKEND_URL:-http://skrift-backend:4000}
|
||||
SKRIFT_BACKEND_TOKEN: ${SKRIFT_BACKEND_TOKEN}
|
||||
SKRIFT_PREVIEW_LIMIT: ${SKRIFT_PREVIEW_LIMIT:-10}
|
||||
SKRIFT_TEAM_EMAIL: ${SKRIFT_TEAM_EMAIL:-hello@skrift.de}
|
||||
|
||||
# Shared Secret für den WordPress-Webhook (JetFormBuilder → /skrift-orders/inbound/*).
|
||||
# Muss identisch als ?token=... in der Webhook-URL stehen.
|
||||
SKRIFT_WEBHOOK_TOKEN: ${SKRIFT_WEBHOOK_TOKEN}
|
||||
|
||||
# Signatur-Plotter-Service (Vorschau/Render im Unterschriftenservice-Modul).
|
||||
SKRIFT_SIGN_URL: ${SKRIFT_SIGN_URL:-http://skrift-signature-service:8000}
|
||||
|
||||
# PayPal – server-seitige Zahlungsprüfung (Secret liegt NUR hier, nie im Frontend)
|
||||
PAYPAL_CLIENT_ID: ${PAYPAL_CLIENT_ID}
|
||||
PAYPAL_CLIENT_SECRET: ${PAYPAL_CLIENT_SECRET}
|
||||
PAYPAL_ENV: ${PAYPAL_ENV:-sandbox}
|
||||
expose:
|
||||
- "8055"
|
||||
networks:
|
||||
- internal
|
||||
- npm
|
||||
|
||||
volumes:
|
||||
directus-db:
|
||||
directus-uploads:
|
||||
|
||||
networks:
|
||||
internal:
|
||||
npm:
|
||||
name: nginx-proxy-manager_default
|
||||
external: true
|
||||
Reference in New Issue
Block a user