services: backend: build: context: . dockerfile: Dockerfile.backend image: webmaster-backend:dev container_name: webmaster-backend restart: unless-stopped ports: - "8000:8000" environment: AUTH_SECRET_KEY: ${AUTH_SECRET_KEY:-change-me-in-production} AUTH_USERNAME: ${AUTH_USERNAME:-admin} AUTH_PASSWORD: ${AUTH_PASSWORD:-admin} COOKIE_SECRET: ${COOKIE_SECRET:-change-me-cookie-secret} CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:3000} DATABASE_URL: sqlite+aiosqlite:///./data/webmaster.db DASHSCOPE_API_KEY: ${DASHSCOPE_API_KEY:-} ENABLE_DANGEROUS_OPS: ${ENABLE_DANGEROUS_OPS:-false} METRICS_COLLECT_INTERVAL: ${METRICS_COLLECT_INTERVAL:-60} volumes: - ./data:/app/data - ${HOME:-~}/.kube:/root/.kube:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"] interval: 30s timeout: 5s retries: 3 start_period: 20s frontend: build: context: . dockerfile: Dockerfile.frontend image: webmaster-frontend:dev container_name: webmaster-frontend restart: unless-stopped ports: - "3000:3000" environment: NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:8000} depends_on: backend: condition: service_healthy