version: '3.8' services: dashboard-api: build: context: ./backend dockerfile: Dockerfile ports: - "3200:3200" environment: - DATABASE_PATH=/data/devperf.db - JWT_SECRET=${JWT_SECRET:-change-me-in-production-32chars} - PORT=3200 - PLANE_BASE_URL=${PLANE_BASE_URL:-http://plane-api:8000} - PLANE_API_TOKEN=${PLANE_API_TOKEN} - PLANE_WORKSPACE_SLUG=${PLANE_WORKSPACE_SLUG:-jasonqiyuan} - GITEA_BASE_URL=${GITEA_BASE_URL:-http://gitea:3000} - GITEA_API_TOKEN=${GITEA_API_TOKEN} - GITEA_ORG=${GITEA_ORG:-jasonqiyuan} - SYNC_PLANE_INTERVAL=${SYNC_PLANE_INTERVAL:-15} - SYNC_GITEA_INTERVAL=${SYNC_GITEA_INTERVAL:-30} - ADMIN_EMAIL=${ADMIN_EMAIL:-admin@jasonqiyuan.com} - ADMIN_PASSWORD=${ADMIN_PASSWORD:-Admin123!} volumes: - dashboard-data:/data restart: unless-stopped networks: - devperf-net healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3200/api/health"] interval: 30s timeout: 10s retries: 3 dashboard-web: build: context: ./frontend dockerfile: Dockerfile ports: - "3201:80" depends_on: dashboard-api: condition: service_healthy restart: unless-stopped networks: - devperf-net volumes: dashboard-data: networks: devperf-net: external: true