- Docker y Docker Compose
backend/.envcon variables del backend (ver abajo).enven la raíz (o variables exportadas) conVITE_*para build del frontend
docker compose up -dApp: http://localhost
API: http://localhost/api
Health: http://localhost/api/health (pasando por proxy)
| Servicio | Puerto interno | Descripción |
|---|---|---|
| backend | 4000 | API Express (Prisma, Supabase) |
| frontend | 80 | React (Vite build) servido por Nginx |
| proxy | 80 (host) | Nginx: /api → backend, / → frontend |
El backend recibe todas sus variables desde backend/.env via env_file.
Variables críticas:
SUPABASE_URL,SUPABASE_ANON_KEY,SUPABASE_SERVICE_ROLE_KEYDATABASE_URL,DIRECT_URLUSE_DIRECT_URL— en Docker suele serfalse(dominio público). Si la DB está en Tailscale, el contenedor no la alcanzará salvo que usesnetwork_mode: host.ALLOWED_ORIGINS— añadirhttp://localhostsi accedes por puerto 80FRONTEND_URL— opcional, para recuperación de contraseña
Docker Compose usa estas variables como build-args. Copia .env.docker.example a .env:
VITE_API_URL=/api
VITE_SUPABASE_URL=https://tu-proyecto.supabase.co
VITE_SUPABASE_ANON_KEY=eyJ...
Si faltan VITE_SUPABASE_URL o VITE_SUPABASE_ANON_KEY, el login fallará (supabaseUrl required).
| Variable | Dónde | Usado por |
|---|---|---|
| DATABASE_URL | backend/.env | Backend (Prisma) |
| DIRECT_URL | backend/.env | Backend (migraciones) |
| USE_DIRECT_URL | backend/.env | Backend |
| SUPABASE_* | backend/.env | Backend |
| VITE_API_URL | .env raíz | Frontend (build) |
| VITE_SUPABASE_* | .env raíz | Frontend (build) |
- Si Postgres está externo (Supabase Cloud, self-hosted vía dominio):
USE_DIRECT_URL=false, usaDATABASE_URLcon dominio. - Si Postgres está en Tailscale (IP privada): el contenedor normalmente no tiene Tailscale. Opciones:
- Usar dominio público de Supabase si existe.
network_mode: hosten el servicio backend (solo Linux) para usar la red del host.- Montar un servicio Postgres en el mismo compose para desarrollo local.
docker compose build --no-cache frontend
docker compose up -dEl frontend embebe las VITE_* en el build; cambios en .env requieren rebuild.