我创建了一个带有3个不同应用程序设置文件的.net核心Web应用程序
我在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更需要什么?
从我的角度看,一切看起来都不错,但请注意Linux(如果它是您的主机操作系统)区分大小写的事实。 ASP.NET Core尊重主机操作系统约定。
你能否证实--env ASPNETCORE_ENVIRONMENT=$env
实际上是-e ASPNETCORE_ENVIRONMENT=PROD
或-e ASPNETCORE_ENVIRONMENT=DEV
?
-e ASPNETCORE_ENVIRONMENT=Prod
不会工作。 -e ASPNETCORE_ENVIRONMENT=PROD
将适用于您的情况。