我用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上进行调试期间,会根据环境变量(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运行还需要什么吗?
答案 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
将适合您的情况。