services: db: image: postgres:17 restart: unless-stopped environment: POSTGRES_DB: praktikum POSTGRES_USER: praktikum POSTGRES_PASSWORD: ${DATABASE_PASSWORD:-password} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U praktikum -d praktikum"] interval: 10s timeout: 5s retries: 10 redis: image: redis:7-alpine restart: unless-stopped volumes: - redis:/data api: build: . restart: unless-stopped depends_on: db: { condition: service_healthy } environment: DATABASE_URL: postgres://praktikum:${DATABASE_PASSWORD:-password}@db:5432/praktikum REDIS_URL: redis://redis:6379/0 RAILS_ENV: production SECRET_KEY_BASE: ${SECRET_KEY_BASE:?SECRET_KEY_BASE fehlt. Bitte zuerst setup-env.ps1 ausfuehren oder eine .env anlegen.} FRONTEND_ORIGINS: ${FRONTEND_ORIGINS:-http://localhost:13131} FRONTEND_URL: ${FRONTEND_URL:-http://localhost:13131} APP_HOST: ${APP_HOST:-localhost:13131} APP_PROTOCOL: ${APP_PROTOCOL:-http} ADMIN_EMAIL: ${ADMIN_EMAIL:-christoph@marzell.net} MAILER_FROM: ${MAILER_FROM:-praktikum@marzell.net} SMTP_ENABLED: ${SMTP_ENABLED:-true} SMTP_ADDRESS: ${SMTP_ADDRESS:-smtp.ionos.de} SMTP_PORT: ${SMTP_PORT:-587} SMTP_USERNAME: ${SMTP_USERNAME:-} SMTP_PASSWORD: ${SMTP_PASSWORD:-} SMTP_DOMAIN: ${SMTP_DOMAIN:-marzell.net} SMTP_AUTHENTICATION: ${SMTP_AUTHENTICATION:-plain} SMTP_STARTTLS: ${SMTP_STARTTLS:-true} BACKUP_NOTIFY_EMAIL: ${BACKUP_NOTIFY_EMAIL:-christoph@marzell.net} TRAINING_WATCH_NOTIFY_EMAIL: ${TRAINING_WATCH_NOTIFY_EMAIL:-christoph@marzell.net} PGHERO_USERNAME: ${PGHERO_USERNAME:-admin} PGHERO_PASSWORD: ${PGHERO_PASSWORD:-} ports: ["${API_PORT:-13000}:3000"] frontend: build: ./frontend restart: unless-stopped depends_on: [api] ports: ["${FRONTEND_PORT:-13131}:80"] volumes: pgdata: redis: