Multi-stage build: node builds the SPA, dotnet publishes the API, the runtime image serves the SPA from wwwroot/ and exposes /health. Frontend Supabase URL + publishable key are baked in at build time; DB conn string and Supabase JWKS metadata come from Coolify env vars. VITE_API_URL empty means same-origin, so the browser hits /api/todos on the same host that serves the SPA.
1.3 KiB
1.3 KiB