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:
22
.env.example
22
.env.example
@@ -35,6 +35,28 @@ CORS_ORIGINS=http://localhost:5173,http://localhost:3000
|
|||||||
NODE_ENV=development
|
NODE_ENV=development
|
||||||
VITE_API_URL=http://localhost:8000/api
|
VITE_API_URL=http://localhost:8000/api
|
||||||
INTERNAL_API_URL=http://backend:8000/api
|
INTERNAL_API_URL=http://backend:8000/api
|
||||||
|
|
||||||
|
# ⚠️ ADVERTENCIA PRODUCCIÓN — ORIGIN, VITE_HUB_URL y APP_PUBLIC_URL
|
||||||
|
# ─────────────────────────────────────────────────────────────────────
|
||||||
|
# Docker Compose carga ESTE archivo (.env raíz) automáticamente cuando
|
||||||
|
# se ejecuta: docker compose -f docker-compose.prod.yml up
|
||||||
|
#
|
||||||
|
# Si estas variables tienen valores localhost aquí, PISARÁN los defaults
|
||||||
|
# de docker-compose.prod.yml y causarán que el login falle en producción
|
||||||
|
# (redirect_uri y KC URL apuntarán a localhost).
|
||||||
|
#
|
||||||
|
# Para dev local (docker-compose.yml): dejar localhost.
|
||||||
|
# Para producción (docker-compose.prod.yml): asegurarse que el servidor
|
||||||
|
# NO tenga este .env raíz con valores localhost, O usar:
|
||||||
|
# docker compose --env-file .env.prod -f docker-compose.prod.yml up
|
||||||
|
#
|
||||||
|
# Variables críticas para producción:
|
||||||
|
# ORIGIN=https://anexo76-dev.aduanasoft.com ← determina url.origin en SvelteKit
|
||||||
|
# VITE_HUB_URL=https://workspace.aduanasoft.com
|
||||||
|
# APP_PUBLIC_URL=https://anexo76-dev.aduanasoft.com
|
||||||
|
ORIGIN=http://localhost:5173
|
||||||
|
VITE_HUB_URL=http://localhost:3001
|
||||||
|
APP_PUBLIC_URL=http://localhost:5173
|
||||||
VITE_KEYCLOAK_REALM=master
|
VITE_KEYCLOAK_REALM=master
|
||||||
VITE_KEYCLOAK_URL=http://localhost:8080/kcauth
|
VITE_KEYCLOAK_URL=http://localhost:8080/kcauth
|
||||||
VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend
|
VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend
|
||||||
|
|||||||
@@ -358,6 +358,10 @@ services:
|
|||||||
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:8000/api/}
|
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:8000/api/}
|
||||||
- INTERNAL_HUB_URL=https://workspace.aduanasoft.com
|
- INTERNAL_HUB_URL=https://workspace.aduanasoft.com
|
||||||
- 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_URL=${VITE_KEYCLOAK_URL:-https://anexo76-dev.aduanasoft.com/kcauth/}
|
||||||
- VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM:-master}
|
- VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM:-master}
|
||||||
- VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID:-anexo76-frontend}
|
- VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID:-anexo76-frontend}
|
||||||
@@ -365,8 +369,14 @@ services:
|
|||||||
- KEYCLOAK_REALM=${KEYCLOAK_REALM:-master}
|
- KEYCLOAK_REALM=${KEYCLOAK_REALM:-master}
|
||||||
- KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend}
|
- KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend}
|
||||||
- KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET:-dev-secret}
|
- 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}
|
- 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:
|
ports:
|
||||||
- "5111:5173"
|
- "5111:5173"
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -22,9 +22,16 @@ ENV VITE_API_URL=${VITE_API_URL}
|
|||||||
ARG VITE_KEYCLOAK_URL
|
ARG VITE_KEYCLOAK_URL
|
||||||
ENV VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL}
|
ENV VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL}
|
||||||
|
|
||||||
|
ARG VITE_KEYCLOAK_REALM=master
|
||||||
|
ENV VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM}
|
||||||
|
|
||||||
ARG VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend
|
ARG VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend
|
||||||
ENV VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID}
|
ENV VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID}
|
||||||
|
|
||||||
|
# URL pública del Hub Workspace (bakeada en build para el browser)
|
||||||
|
ARG VITE_HUB_URL=https://workspace.aduanasoft.com
|
||||||
|
ENV VITE_HUB_URL=${VITE_HUB_URL}
|
||||||
|
|
||||||
ARG INTERNAL_API_URL
|
ARG INTERNAL_API_URL
|
||||||
ENV INTERNAL_API_URL=${INTERNAL_API_URL}
|
ENV INTERNAL_API_URL=${INTERNAL_API_URL}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user