services: mission-control: image: mission-control:latest pull_policy: build build: context: . dockerfile: Dockerfile args: NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL:-} NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:-} NEXT_PUBLIC_GOOGLE_CLIENT_ID: ${NEXT_PUBLIC_GOOGLE_CLIENT_ID:-} NEXT_PUBLIC_MISSION_CONTROL_URL: ${NEXT_PUBLIC_MISSION_CONTROL_URL:-} NEXT_PUBLIC_GANTT_BOARD_URL: ${NEXT_PUBLIC_GANTT_BOARD_URL:-} NEXT_PUBLIC_BLOG_BACKUP_URL: ${NEXT_PUBLIC_BLOG_BACKUP_URL:-} NEXT_PUBLIC_GITEA_URL: ${NEXT_PUBLIC_GITEA_URL:-} NEXT_PUBLIC_GITHUB_URL: ${NEXT_PUBLIC_GITHUB_URL:-} NEXT_PUBLIC_VERCEL_URL: ${NEXT_PUBLIC_VERCEL_URL:-} NEXT_PUBLIC_SUPABASE_SITE_URL: ${NEXT_PUBLIC_SUPABASE_SITE_URL:-} NEXT_PUBLIC_GOOGLE_URL: ${NEXT_PUBLIC_GOOGLE_URL:-} NEXT_PUBLIC_GOOGLE_CALENDAR_URL: ${NEXT_PUBLIC_GOOGLE_CALENDAR_URL:-} NEXT_PUBLIC_GOOGLE_CALENDAR_SETTINGS_URL: ${NEXT_PUBLIC_GOOGLE_CALENDAR_SETTINGS_URL:-} NEXT_PUBLIC_GANTT_API_BASE_URL: ${NEXT_PUBLIC_GANTT_API_BASE_URL:-} NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-} restart: unless-stopped ports: - "${APP_PORT:-8301}:8301" environment: NODE_ENV: production NEXT_TELEMETRY_DISABLED: "1" NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL:-} NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:-} NEXT_PUBLIC_GOOGLE_CLIENT_ID: ${NEXT_PUBLIC_GOOGLE_CLIENT_ID:-} NEXT_PUBLIC_MISSION_CONTROL_URL: ${NEXT_PUBLIC_MISSION_CONTROL_URL:-} NEXT_PUBLIC_GANTT_BOARD_URL: ${NEXT_PUBLIC_GANTT_BOARD_URL:-} NEXT_PUBLIC_BLOG_BACKUP_URL: ${NEXT_PUBLIC_BLOG_BACKUP_URL:-} NEXT_PUBLIC_GITEA_URL: ${NEXT_PUBLIC_GITEA_URL:-} NEXT_PUBLIC_GITHUB_URL: ${NEXT_PUBLIC_GITHUB_URL:-} NEXT_PUBLIC_VERCEL_URL: ${NEXT_PUBLIC_VERCEL_URL:-} NEXT_PUBLIC_SUPABASE_SITE_URL: ${NEXT_PUBLIC_SUPABASE_SITE_URL:-} NEXT_PUBLIC_GOOGLE_URL: ${NEXT_PUBLIC_GOOGLE_URL:-} NEXT_PUBLIC_GOOGLE_CALENDAR_URL: ${NEXT_PUBLIC_GOOGLE_CALENDAR_URL:-} NEXT_PUBLIC_GOOGLE_CALENDAR_SETTINGS_URL: ${NEXT_PUBLIC_GOOGLE_CALENDAR_SETTINGS_URL:-} NEXT_PUBLIC_GANTT_API_BASE_URL: ${NEXT_PUBLIC_GANTT_API_BASE_URL:-} NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-} SUPABASE_SERVICE_ROLE_KEY: ${SUPABASE_SERVICE_ROLE_KEY:-} SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL:-} SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:-} GANTT_API_BASE_URL: ${GANTT_API_BASE_URL:-} GANTT_API_REVALIDATE_SECONDS: ${GANTT_API_REVALIDATE_SECONDS:-} GANTT_API_BEARER_TOKEN: ${GANTT_API_BEARER_TOKEN:-} GANTT_API_COOKIE: ${GANTT_API_COOKIE:-} RESEND_API_KEY: ${RESEND_API_KEY:-} RESEND_FROM_EMAIL: ${RESEND_FROM_EMAIL:-} EMAIL_FROM: ${EMAIL_FROM:-} VERCEL_URL: ${VERCEL_URL:-} volumes: - mission_control_data:/app/data healthcheck: test: ["CMD-SHELL", "node -e \"fetch('http://127.0.0.1:8301/login').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""] interval: 30s timeout: 5s retries: 5 start_period: 45s volumes: mission_control_data: