From 9b55f5219a51351000b59d19f65707c2cc6ecf2b Mon Sep 17 00:00:00 2001 From: dahoud Date: Sat, 25 Oct 2025 17:46:44 +0000 Subject: [PATCH] Fix: Use ARG for NEXT_PUBLIC variables to ensure correct API URL during build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Frontend was trying to contact http://localhost:8080 instead of https://api.lions.dev/btpxpress because NEXT_PUBLIC_API_URL wasn't correctly baked into the Next.js bundle during build. Solution: - Added ARG declarations with correct default values for all NEXT_PUBLIC_* variables - Convert ARG to ENV before running npm run build - This ensures Next.js bakes the correct values into the bundle - ARG allows override at docker build time if needed - Fixed ENV format to use = instead of space (removes Docker warnings) Variables defined: - NEXT_PUBLIC_API_URL=https://api.lions.dev/btpxpress - NEXT_PUBLIC_KEYCLOAK_URL=https://security.lions.dev - NEXT_PUBLIC_KEYCLOAK_REALM=btpxpress - NEXT_PUBLIC_KEYCLOAK_CLIENT_ID=btpxpress-frontend - NEXT_PUBLIC_APP_ENV=production 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- Dockerfile | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 88570c5..8a4d24a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,17 +19,31 @@ RUN npm ci COPY . . +# Build arguments for NEXT_PUBLIC variables (can be overridden at build time) +ARG NEXT_PUBLIC_API_URL=https://api.lions.dev/btpxpress +ARG NEXT_PUBLIC_KEYCLOAK_URL=https://security.lions.dev +ARG NEXT_PUBLIC_KEYCLOAK_REALM=btpxpress +ARG NEXT_PUBLIC_KEYCLOAK_CLIENT_ID=btpxpress-frontend +ARG NEXT_PUBLIC_APP_ENV=production + +# Convert ARG to ENV for Next.js build process +ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} +ENV NEXT_PUBLIC_KEYCLOAK_URL=${NEXT_PUBLIC_KEYCLOAK_URL} +ENV NEXT_PUBLIC_KEYCLOAK_REALM=${NEXT_PUBLIC_KEYCLOAK_REALM} +ENV NEXT_PUBLIC_KEYCLOAK_CLIENT_ID=${NEXT_PUBLIC_KEYCLOAK_CLIENT_ID} +ENV NEXT_PUBLIC_APP_ENV=${NEXT_PUBLIC_APP_ENV} + # Build Next.js application -ENV NODE_ENV production -ENV NEXT_TELEMETRY_DISABLED 1 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 RUN npm run build ## Stage 3: Production image FROM node:20-alpine AS runner WORKDIR /app -ENV NODE_ENV production -ENV NEXT_TELEMETRY_DISABLED 1 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs @@ -43,8 +57,8 @@ USER nextjs EXPOSE 3000 -ENV PORT 3000 -ENV HOSTNAME "0.0.0.0" +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \