.net核心应用程序中基于环境的应用程序 - docker

问题描述 投票:0回答:1

我创建了一个带有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上调试期间,appsettings.js将根据env variables(eg: if env=dev -> i got configuration variables from appsettings.DEV.json and if env=prod -> i got configuration variables from appsettings.PROD.json )进行替换

但在将我的应用程序停靠后,这是行不通的。我使用了以下docker命令来运行我的应用程序。

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

docker run更需要什么?

docker asp.net-core configuration .net-core appsettings
1个回答
0
投票

从我的角度看,一切看起来都不错,但请注意Linux(如果它是您的主机操作系统)区分大小写的事实。 ASP.NET Core尊重主机操作系统约定。

你能否证实--env ASPNETCORE_ENVIRONMENT=$env实际上是-e ASPNETCORE_ENVIRONMENT=PROD-e ASPNETCORE_ENVIRONMENT=DEV

-e ASPNETCORE_ENVIRONMENT=Prod不会工作。 -e ASPNETCORE_ENVIRONMENT=PROD将适用于您的情况。

© www.soinside.com 2019 - 2024. All rights reserved.