# Manage development stack — backend + frontend only. # # Manage does NOT deploy its own Grafana/Prometheus/Loki/Alertmanager stack. # It exposes a /metrics endpoint and optional Alertmanager proxy endpoints so # an *existing* observability deployment can scrape/consume them. # # For a ready-to-use example observability stack, see # docker-compose.observability.yml and docs/observability-runbooks.md. services: backend: build: context: . dockerfile: backend/Dockerfile container_name: backend command: uvicorn media_library_viewer_api.main:app --host 0.0.0.0 --port 8000 --reload environment: AUTH_ENABLED: "false" OIDC_ISSUER_URL: ${OIDC_ISSUER_URL:-} OIDC_AUDIENCE: ${OIDC_AUDIENCE:-} OIDC_JWKS_URL: ${OIDC_JWKS_URL:-} LOG_LEVEL: ${LOG_LEVEL:-INFO} LOG_FORMAT: ${LOG_FORMAT:-text} PROMETHEUS_ENABLED: "true" SSH_KNOWN_HOSTS_PATH: /app/backend/.cache/known_hosts MANAGE_ENCRYPTION_KEY: ${MANAGE_ENCRYPTION_KEY:?set MANAGE_ENCRYPTION_KEY in your .env} ports: - "8000:8000" volumes: - ./backend:/app/backend - ${BACKEND_CACHE_DIR:-./backend-cache}:/app/backend/.cache networks: - web restart: unless-stopped frontend: build: context: . dockerfile: frontend/Dockerfile target: dev container_name: frontend environment: VITE_API_URL: "/api" VITE_OIDC_ENABLED: "false" VITE_DEV_API_PROXY_TARGET: "http://backend:8000" ports: - "5173:5173" volumes: - ./frontend:/app/frontend - frontend_node_modules:/app/frontend/node_modules depends_on: - backend networks: - web restart: unless-stopped networks: web: volumes: frontend_node_modules: