diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 98e18fd..030f642 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -34,6 +34,16 @@ services: web: ports: !override - "3050:3045" + # NEXT_PUBLIC_* values are baked into the Next.js bundle at build + # time. They MUST be set as build args so `pnpm run build` inside + # the Dockerfile picks them up. Runtime `environment:` alone has no + # effect on the already-bundled client code. + build: + args: + NEXT_PUBLIC_NOTES_API_URL: "http://localhost:4016/api" + NEXT_PUBLIC_PLATFORM_SERVICE_URL: "http://localhost:4003/api" + NEXT_PUBLIC_EXTRACTION_SERVICE_URL: "http://localhost:4005" + NEXT_PUBLIC_MCP_SERVER_URL: "http://localhost:4007/api" environment: NEXT_PUBLIC_NOTES_API_URL: "http://localhost:4016/api" NEXT_PUBLIC_PLATFORM_SERVICE_URL: "http://localhost:4003/api" diff --git a/docker-compose.yml b/docker-compose.yml index 9a44223..0a5d94f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,15 +46,26 @@ services: context: . dockerfile: web/Dockerfile args: - NEXT_PUBLIC_NOTES_API_URL: https://api.bytelyst.com/notelett + # NEXT_PUBLIC_* values are baked into the Next.js bundle at build + # time, so they MUST be passed as build args, not just runtime + # environment. The defaults below target a local stack; override + # via the same-named env var on the host (the value is captured + # by docker compose's ${VAR:-default} substitution). + NEXT_PUBLIC_NOTES_API_URL: ${NEXT_PUBLIC_NOTES_API_URL:-http://localhost:4016/api} NEXT_PUBLIC_PLATFORM_SERVICE_URL: ${NEXT_PUBLIC_PLATFORM_SERVICE_URL:-http://localhost:4003/api} + NEXT_PUBLIC_EXTRACTION_SERVICE_URL: ${NEXT_PUBLIC_EXTRACTION_SERVICE_URL:-http://localhost:4005} + NEXT_PUBLIC_MCP_SERVER_URL: ${NEXT_PUBLIC_MCP_SERVER_URL:-http://localhost:4007/api} + NEXT_PUBLIC_DIAGNOSTICS_URL: ${NEXT_PUBLIC_DIAGNOSTICS_URL:-http://localhost:3000} + NEXT_PUBLIC_PRODUCT_NAME: ${NEXT_PUBLIC_PRODUCT_NAME:-NoteLett} + NEXT_PUBLIC_PRODUCT_ID: ${NEXT_PUBLIC_PRODUCT_ID:-notelett} + NEXT_PUBLIC_TELEMETRY_TRANSPORT: ${NEXT_PUBLIC_TELEMETRY_TRANSPORT:-fetch} ports: - "3000:3045" environment: NODE_ENV: production NEXT_PUBLIC_PRODUCT_NAME: NoteLett NEXT_PUBLIC_PRODUCT_ID: notelett - NEXT_PUBLIC_NOTES_API_URL: https://api.bytelyst.com/notelett + NEXT_PUBLIC_NOTES_API_URL: ${NEXT_PUBLIC_NOTES_API_URL:-http://localhost:4016/api} NEXT_PUBLIC_PLATFORM_SERVICE_URL: ${NEXT_PUBLIC_PLATFORM_SERVICE_URL:-http://localhost:4003/api} NEXT_PUBLIC_EXTRACTION_SERVICE_URL: ${EXTRACTION_SERVICE_URL:-http://localhost:4005} NEXT_PUBLIC_MCP_SERVER_URL: ${MCP_SERVER_URL:-http://localhost:4007}/api diff --git a/web/Dockerfile b/web/Dockerfile index c4f481b..40b3f57 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -20,10 +20,26 @@ COPY web/next-env.d.ts ./next-env.d.ts COPY web/src/ ./src/ COPY shared/ ../shared/ +# NEXT_PUBLIC_* values are baked into the Next.js bundle at build time. +# Every URL the client uses must be declared here so docker-compose +# build args reach `pnpm run build`. The values are typically supplied +# from docker-compose.yml or .env. ARG NEXT_PUBLIC_NOTES_API_URL ARG NEXT_PUBLIC_PLATFORM_SERVICE_URL +ARG NEXT_PUBLIC_EXTRACTION_SERVICE_URL +ARG NEXT_PUBLIC_MCP_SERVER_URL +ARG NEXT_PUBLIC_DIAGNOSTICS_URL +ARG NEXT_PUBLIC_PRODUCT_NAME +ARG NEXT_PUBLIC_PRODUCT_ID +ARG NEXT_PUBLIC_TELEMETRY_TRANSPORT ENV NEXT_PUBLIC_NOTES_API_URL=$NEXT_PUBLIC_NOTES_API_URL ENV NEXT_PUBLIC_PLATFORM_SERVICE_URL=$NEXT_PUBLIC_PLATFORM_SERVICE_URL +ENV NEXT_PUBLIC_EXTRACTION_SERVICE_URL=$NEXT_PUBLIC_EXTRACTION_SERVICE_URL +ENV NEXT_PUBLIC_MCP_SERVER_URL=$NEXT_PUBLIC_MCP_SERVER_URL +ENV NEXT_PUBLIC_DIAGNOSTICS_URL=$NEXT_PUBLIC_DIAGNOSTICS_URL +ENV NEXT_PUBLIC_PRODUCT_NAME=$NEXT_PUBLIC_PRODUCT_NAME +ENV NEXT_PUBLIC_PRODUCT_ID=$NEXT_PUBLIC_PRODUCT_ID +ENV NEXT_PUBLIC_TELEMETRY_TRANSPORT=$NEXT_PUBLIC_TELEMETRY_TRANSPORT ENV NEXT_TELEMETRY_DISABLED=1 RUN pnpm run build