version: '3.8' # Keine festen container_name: Namen sind hostweit eindeutig und kollidieren bei # erneuten Deploys / anderem Compose-Projektprefix. Compose vergibt z. B. -postgres-1. services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: shinkan_dev POSTGRES_USER: shinkan_dev POSTGRES_PASSWORD: dev_password volumes: - dev-shinkan-db-data:/var/lib/postgresql/data ports: - "5435:5432" restart: unless-stopped networks: - dev-shinkan-network backend: build: context: ./backend dockerfile: Dockerfile environment: DB_HOST: postgres DB_PORT: 5432 DB_NAME: shinkan_dev DB_USER: shinkan_dev DB_PASSWORD: dev_password OPENROUTER_API_KEY: ${OPENROUTER_API_KEY} OPENROUTER_MODEL: ${OPENROUTER_MODEL} SMTP_HOST: ${SMTP_HOST} SMTP_PORT: ${SMTP_PORT} SMTP_USER: ${SMTP_USER} SMTP_PASS: ${SMTP_PASS} SMTP_FROM: ${SMTP_FROM} # Öffentliche Dev-URL (E-Mail-Links); lokaler Zugriff per IP bleibt über ALLOWED_ORIGINS möglich APP_URL: "${DEV_APP_URL:-https://dev.shinkan.jinkendo.de}" # Login/Register vom Browser: HTTPS-Subdomain und optional LAN-IP (Compose überschreibbar per .env) ALLOWED_ORIGINS: "${DEV_ALLOWED_ORIGINS:-https://dev.shinkan.jinkendo.de,http://192.168.2.49:3098}" ENVIRONMENT: development MEDIAWIKI_API_URL: https://karatetrainer.net/api.php MEDIAWIKI_USER: Jinkendo MEDIAWIKI_PASSWORD: Jinkendo6970 MEDIAWIKI_CATEGORY_EXERCISES: Übungen MEDIAWIKI_CATEGORY_SKILLS: Fähigkeitsbeschreibung MEDIAWIKI_CATEGORY_METHODS: Methodenbeschreibung MEDIAWIKI_CATEGORY_MODELS: Reifegradmodelle volumes: - dev-shinkan-media:/app/media ports: - "8098:8000" depends_on: - postgres restart: unless-stopped networks: - dev-shinkan-network frontend: build: context: ./frontend dockerfile: Dockerfile # Leer = relative /api/*-URLs → gleicher Host wie die SPA (vermeidet Mixed Content HTTPS→HTTP) args: VITE_API_URL: "" ports: - "3098:80" depends_on: - backend restart: unless-stopped networks: - dev-shinkan-network volumes: dev-shinkan-db-data: dev-shinkan-media: networks: dev-shinkan-network: driver: bridge