.NET Core应用程序中基于环境的应用程序设置-Docker

时间:2019-04-02 13:50:22

标签: docker asp.net-core configuration .net-core appsettings

我用3个不同的应用程序设置文件创建了.net核心Web应用程序

  • appsettings.json
  • appsettings.DEV.json
  • appsettings.PROD.json

startup.cs文件中包含以下代码

 public Startup(IHostingEnvironment env)
 {
      var builder = new ConfigurationBuilder()
          .SetBasePath(env.ContentRootPath)
          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
          .AddEnvironmentVariables();
      configuration = builder.Build();
 }

在Visual Studio上进行调试期间,会根据环境变量(eg: if env=dev -> i got configuration variables from appsettings.DEV.json and if env=prod -> i got configuration variables from appsettings.PROD.json )替换appsettings.js

但是在对我的应用程序进行docker化后,这无法正常工作。我已使用以下docker命令运行我的应用程序。

docker run \
            --detach \
            --restart always \
            --name $name \
            --env ASPNETCORE_ENVIRONMENT=$env \
            --env containerName=$name \
            reponame

Docker运行还需要什么吗?

1 个答案:

答案 0 :(得分:0)

从我的角度来看,一切看起来都不错,但是请注意Linux(如果是您的主机OS)区分大小写的事实。 ASP.NET Core遵守任何已建立的主机OS约定。

您可以确认--env ASPNETCORE_ENVIRONMENT=$env实际上是-e ASPNETCORE_ENVIRONMENT=PROD还是-e ASPNETCORE_ENVIRONMENT=DEV吗?

-e ASPNETCORE_ENVIRONMENT=Prod不起作用。 -e ASPNETCORE_ENVIRONMENT=PROD将适合您的情况。