services: backend: build: context: . dockerfile: JobTrackerApi/Dockerfile volumes: - jobtracker_data:/data environment: - ASPNETCORE_URLS=http://+:8080 - Data__Root=/data - Exports__DailyFolder=/data/exports # If you enable HTTPS at a reverse proxy (recommended), handle redirects there. - HttpsRedirection__Enabled=false # Authentication (recommended for any non-local deployment) - Auth__Require=true - Auth__JwtKey=${AUTH_JWT_KEY} - Auth__AdminEmail=${AUTH_ADMIN_EMAIL} - Auth__AdminPassword=${AUTH_ADMIN_PASSWORD} # Optional: allow Google ID-token bearer auth - Auth__GoogleClientId=${AUTH_GOOGLE_CLIENT_ID} - Google__GmailClientSecret=${GOOGLE_GMAIL_CLIENT_SECRET} - Google__GmailRedirectUri=${GOOGLE_GMAIL_REDIRECT_URI} - Summarizer__BaseUrl=${SUMMARIZER_BASE_URL:-http://summarizer:8001} # Email (SMTP) - App__PublicBaseUrl=${APP_PUBLIC_BASE_URL} - Email__Enabled=${EMAIL_ENABLED} - Email__SmtpHost=${EMAIL_SMTP_HOST} - Email__SmtpPort=${EMAIL_SMTP_PORT} - Email__SmtpEnableSsl=${EMAIL_SMTP_ENABLE_SSL} - Email__SmtpTimeoutMs=${EMAIL_SMTP_TIMEOUT_MS} - Email__SmtpUser=${EMAIL_SMTP_USER} - Email__SmtpPassword=${EMAIL_SMTP_PASSWORD} - Email__From=${EMAIL_FROM} - Email__FromName=${EMAIL_FROM_NAME} expose: - "8080" restart: unless-stopped frontend: build: context: ./job-tracker-ui args: - REACT_APP_GOOGLE_CLIENT_ID=${AUTH_GOOGLE_CLIENT_ID} # Optional override; default in production is `/api` - REACT_APP_API_BASE_URL=${REACT_APP_API_BASE_URL} ports: - "3000:80" depends_on: - backend restart: unless-stopped summarizer: build: context: ./tools/summarizer dockerfile: Dockerfile ports: - "8001:8001" restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8001/health', timeout=5).read()"] interval: 30s timeout: 10s retries: 3 volumes: jobtracker_data: