fix(deploy): corregir vars de producción que causaban localhost en KC URLs

docker-compose.prod.yml:
- Agrega SITE_URL=https://anexo76-dev.aduanasoft.com hardcodeado (no depende
  del .env raíz). resolveSystemBaseUrl() lo usa como fallback cuando
  ORIGIN tiene un valor localhost que pisó el default del compose.
- Agrega VITE_HUB_URL=https://workspace.aduanasoft.com para que
  getWorkspaceBaseUrl() no dependa de VITE_HUB_URL del .env raíz dev.
- Documenta el problema: root .env con ORIGIN=localhost pisa el default.

Dockerfile.prod:
- Agrega ARG/ENV VITE_KEYCLOAK_REALM (faltaba en los build-args de Jenkins).
- Agrega ARG/ENV VITE_HUB_URL con default workspace.aduanasoft.com.

.env.example raíz:
- Agrega advertencia sobre ORIGIN, VITE_HUB_URL y APP_PUBLIC_URL con
  instrucciones explícitas de cómo corregirlos en producción.
- Extrae estos valores al bloque documentado para que sean visibles.

Root cause: el deploy en producción ejecuta
  docker compose -f docker-compose.prod.yml up
  que carga automáticamente el .env raíz con ORIGIN=http://localhost:5173,
  pisando el default correcto del prod compose.
  url.origin en SvelteKit = localhost:5173 → redirect_uri con localhost.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 08:58:29 -05:00
parent 74282d446f
commit 4da360e141
3 changed files with 40 additions and 1 deletions

View File

@@ -358,6 +358,10 @@ services:
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:8000/api/}
- INTERNAL_HUB_URL=https://workspace.aduanasoft.com
- HUB_URL=https://workspace.aduanasoft.com
# VITE_HUB_URL: URL pública del Hub para el browser (bakeada en build, pero también se lee
# en runtime por $env/dynamic/private en workspace-auth.ts). El root .env puede tener
# localhost; isDevOnlyUrl() lo descarta y cae a HUB_URL (correcto arriba).
- VITE_HUB_URL=https://workspace.aduanasoft.com
- VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL:-https://anexo76-dev.aduanasoft.com/kcauth/}
- VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM:-master}
- VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID:-anexo76-frontend}
@@ -365,8 +369,14 @@ services:
- KEYCLOAK_REALM=${KEYCLOAK_REALM:-master}
- KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend}
- KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET:-dev-secret}
# SvelteKit ORIGIN — evita que request.url.origin use la IP/puerto interno del contenedor
# SvelteKit ORIGIN — determina url.origin en load functions y el flag secure de cookies.
# ⚠️ Docker Compose carga el .env raíz automáticamente. Si ese .env tiene
# ORIGIN=http://localhost:5173 (valor dev), sobreescribe el default de abajo.
# SITE_URL es el fallback que usa el código cuando url.origin es localhost.
- ORIGIN=${ORIGIN:-https://anexo76-dev.aduanasoft.com}
# SITE_URL: hardcoded — no depende del .env raíz.
# resolveSystemBaseUrl() lo usa cuando ORIGIN tiene localhost (root .env de dev en prod).
- SITE_URL=https://anexo76-dev.aduanasoft.com
ports:
- "5111:5173"
depends_on: