# Medien: aktuell nicht vorgesehen. Bei Bedarf NAS-Mount + docker-compose.override.yml (siehe docs/DEPLOYMENT.md). services: postgres: image: postgres:16-alpine container_name: kairo-db-prod environment: POSTGRES_DB: "${DB_NAME:-kairo}" POSTGRES_USER: "${DB_USER:-kairo_user}" POSTGRES_PASSWORD: "${DB_PASSWORD:-change_me}" volumes: - kairo-db-data:/var/lib/postgresql/data ports: - "127.0.0.1:5436:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-kairo_user} -d ${DB_NAME:-kairo}"] interval: 5s timeout: 5s retries: 10 restart: unless-stopped networks: - kairo-network backend: build: context: ./backend dockerfile: Dockerfile container_name: kairo-api environment: DB_HOST: postgres DB_PORT: 5432 DB_NAME: "${DB_NAME:-kairo}" DB_USER: "${DB_USER:-kairo_user}" DB_PASSWORD: "${DB_PASSWORD:-change_me}" APP_URL: "${APP_URL:-https://kairo.jinkendo.de}" ALLOWED_ORIGINS: "${ALLOWED_ORIGINS:-https://kairo.jinkendo.de}" ENVIRONMENT: "${ENVIRONMENT:-production}" ports: - "8004:8000" depends_on: postgres: condition: service_healthy healthcheck: test: [ "CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/health')", ] interval: 10s timeout: 5s retries: 12 start_period: 30s restart: unless-stopped networks: - kairo-network frontend: build: context: ./frontend dockerfile: Dockerfile args: VITE_API_URL: "" container_name: kairo-ui ports: - "3004:80" depends_on: backend: condition: service_healthy restart: unless-stopped networks: - kairo-network volumes: kairo-db-data: networks: kairo-network: driver: bridge