我刚刚开始使用docker。花了很多时间在docker视频和教程上,最后我能够创建我的第一个docker镜像(并推送到docker hub)。我将很快将该图像用于我的开发环境。
问题是:
我的appsettings.json文件中的应用程序配置很少。这些配置对于不同的环境是不同的。当我在开发环境中提取docker镜像时,这些配置需要根据开发环境进行更改。我不知道如何管理这个。有人对此有所了解吗?
很少有用的信息:
答案 0 :(得分:1)
你已经看过this
了使用 ConfigurationBuilder
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json")
.AddEnvironmentVariables()
.Build();
答案 1 :(得分:1)
在你的Startup.cs
中,如果一切都完好无损,你应该拥有它;
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json")
.AddEnvironmentVariables()
.Build();
您有Production
以外的2个环境名称。那些是
- Development
- Staging
AspNetCore根据环境变量ASPNETCORE_ENVIRONMENT
的值了解您想要的环境,该值应为Production
,Development
或Staging
您所处的环境非常重要,因为AspNetCore会根据您的环境名称选择正确的设置json文件。我上面分享的代码就是这样做的;
查找特定于环境的设置文件。
所以问题的解决方案是;
当您运行Docker容器时,请根据您要保留的环境设置覆盖环境变量ASPNETCORE_ENVIRONMENT
,如上所述。
答案 2 :(得分:1)
当您docker run
时,您可以为其提供环境变量列表或包含环境设置的文件。这允许您设置启动容器时需要修改的变量。
使用-e
标志:
docker run -it -e ASPNETCORE_ENVIRONMENT=Prod...
使用--env-file
标志:
docker run -it --env-file ./Prod.env ...
供参考:https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e-env-env-file