docker - 在 .net 核心应用程序的 dockerfile 中指定环境变量

我有一个 .net core 3.1 应用程序,我将其作为 docker 容器部署在 aws ecs 上。现在我想在我的 dockerfile 中指定环境变量,我试图在我的代码中使用它,但每次我都没有得到任何值(value)。

这是 .net 核心:

        private IWebHostEnvironment Environment { get; set; }
        public IConfiguration Configuration { get; set; }


        public void ConfigureServices(IServiceCollection services)
        {
          var builder = new ConfigurationBuilder()
           .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
           .AddJsonFile($"appsettings.{Environment.EnvironmentName}.json", optional: true)
           .AddEnvironmentVariables();

现在我想用我在 Dockerfile 中指定的值替换 environment.EnvironmentName 但它不起作用。 我还在某处读到我可以在执行 docker-run 命令时指定环境变量,但在我的情况下我不能这样做,因为 aws ecs 正在运行 docker 容器

这是 docker 文件:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

# Copy everything else and build
COPY . ./
ENV ASPNETCORE_ENVIRONMENT Development

RUN dotnet restore Isofy-Api/*.csproj
RUN dotnet publish Isofy-Api/*.csproj -c Release -o out


# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Isofy-Api.dll"]

我做错了什么?

最佳答案

你应该在最终图像中指定环境变量

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
ENV ASPNETCORE_ENVIRONMENT Development
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Isofy-Api.dll"]

https://stackoverflow.com/questions/60559944/

相关文章:

python - 在 hvplot 中自定义标记列表

git - 将 git 命令与 Google Cloud Builder 结合使用

r - 按列汇总 : mean and sum

c# - 将代码 2.0 迁移到 3.1 核心代码,然后 swagger api 版本控制不起作用

Django - 检查两个密码哈希是否具有相同的原始密码

amazon-web-services - AWS CLI : Could not connect

pandas - 在 Pandas 中使用带有多索引的聚合

reactjs - 功能组件在 setState 更新 Hook 后不重新渲染

clojure - 您如何使用 Reitit 在 Clojure 中设置中间件以启用主体参数的强制转

r - 如何在 R 中绘制用 kmeans 获得的簇的 3D 图?