Blazor WebAssembly 在 Docker 中运行时无法读取环境变量或查找文件

Zuc*_*ini 5 mono docker blazor blazor-webassembly

我有一个 Blazor WebAssembly 项目,我已经对其进行了 dockerized,并且我正在尝试在启动时读取容器中设置的环境变量。如果我执行以下操作,我就可以在容器中运行 shell 并回显变量。

docker run -e DEBUG=false --name blazortest dockerizedclientsideblazor
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用此命令读取应用程序中的环境变量。

Environment.GetEnvironmentVariable("DEBUG")
Run Code Online (Sandbox Code Playgroud)

它返回 null,并且与尝试读取已安装的文件相同。可以向我解释一下为什么我会遇到这种情况吗?

我的 Dockerfile 看起来像这样。

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
COPY . ./
RUN ls -la ./
RUN dotnet publish -c Release -o output

FROM nginx:alpine
WORKDIR /var/www/web
COPY --from=build-env /app/output/wwwroot .
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80 443
Run Code Online (Sandbox Code Playgroud)

Zuc*_*ini 2

回到这个问题,用我自己的答案。

尝试检索服务器(在本例中为容器)上的环境变量的值将不起作用,因为代码正在下载并在客户端上运行。

所以服务器端设置的环境变量不会出现在客户端。

解决方案是使用应用程序设置。