From 148b8e40115ba82fe9320457cf5f6dce7f1f11b0 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sun, 15 Mar 2026 00:42:38 +0330 Subject: [PATCH] fix: inject GwUrl into appsettings at container startup The blazor-environment header is stripped by the Blazor WASM service worker cache, causing Blazor to fall back to Production environment and load appsettings.Production.json (GwUrl=https://cms.kbs1.ir). Fix: use sed in docker-entrypoint.sh to replace GwUrl in ALL appsettings*.json files at container startup with the GW_URL env var. Default GW_URL=https://cms.se.kbs1.ir for staging deployment. --- src/BackOffice/Dockerfile | 2 ++ src/BackOffice/docker-entrypoint.sh | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/BackOffice/Dockerfile b/src/BackOffice/Dockerfile index a89ba28..2b8bac4 100644 --- a/src/BackOffice/Dockerfile +++ b/src/BackOffice/Dockerfile @@ -31,6 +31,8 @@ RUN chmod +x /docker-entrypoint.sh # Default Blazor environment (override via K8s env var BLAZOR_ENVIRONMENT) ENV BLAZOR_ENVIRONMENT=Staging +# Default gateway URL for gRPC calls (injected into appsettings at startup) +ENV GW_URL=https://cms.se.kbs1.ir EXPOSE 80 CMD ["/docker-entrypoint.sh"] diff --git a/src/BackOffice/docker-entrypoint.sh b/src/BackOffice/docker-entrypoint.sh index b0ceecd..2cf6f93 100644 --- a/src/BackOffice/docker-entrypoint.sh +++ b/src/BackOffice/docker-entrypoint.sh @@ -15,4 +15,16 @@ server { } NGINX_CONF +# Inject GW_URL into all appsettings JSON files +# This overrides GwUrl regardless of which environment Blazor detects, +# which is critical because the service worker cache strips the +# blazor-environment header and Blazor falls back to Production. +WWWROOT="/usr/share/nginx/html" +if [ -n "$GW_URL" ]; then + echo "[entrypoint] Setting GwUrl to $GW_URL in all appsettings files" + for f in "$WWWROOT"/appsettings*.json; do + [ -f "$f" ] && sed -i "s|\"GwUrl\":\s*\"[^\"]*\"|\"GwUrl\": \"$GW_URL\"|g" "$f" + done +fi + exec nginx -g 'daemon off;'