当 运行 in Docker 时,Blazor WebAssembly 无法读取环境变量或查找文件

Blazor WebAssembly can't read environment variables or find files when running in Docker

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

docker run -e DEBUG=false --name blazortest dockerizedclientsideblazor

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

Environment.GetEnvironmentVariable("DEBUG")

它returns为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

It returns as null and it's the same for trying to read mounted files.

是的。您的 WebAssembly 应用程序不 运行 在该容器中,它 运行 在最终用户的浏览器中。

您可以从 nginx 上的 运行ning 服务读取变量和那些文件。

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

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

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

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

事实上,即使在客户端执行,您也可以指定环境变量。

多个选项: