一尘不染

如何为在Docker容器中运行的.NET Core Web API服务提供应用程序配置?

docker

我正在使用Docker部署我的ASP.NET Core Web
API微服务,并且正在寻找将配置注入到每个容器中的选项。在应用程序根目录中使用appsettings.json文件的标准方法并不理想,因为据我所知,这意味着将文件构建到我的docker映像中,这将限制该映像可以在哪个环境中运行。

我想一次构建一个映像,可以在运行时为它们提供配置,并在整个开发过程中进行测试,测试UAT并进入生产环境,而无需为每个环境创建映像。

选项似乎是:

  1. 通过环境变量提供配置。似乎有点乏味。
  2. 以某种方式将容器中的路径映射到appsettings.json所在的主机服务器上的标准位置,并获取该服务(如何?)
  3. 可能可以在docker run命令行上提供值吗?

有人对此有经验吗?您能否提供代码示例/方向,尤其是在选项2)上,这似乎是目前最好的?


阅读 207

收藏
2020-06-17

共1个答案

一尘不染

我们现在正在使用其他打包系统(不是docker本身),但是仍然存在相同的问题-包可以部署在任何环境中。

因此,我们现在的做法是:

  1. 使用外部配置管理系统按环境保留和管理配置
  2. 向我们的程序包中注入基本环境变量,以保存配置管理系统的连接详细信息

这样,我们不仅允许程序包在几乎任何“已知”环境中运行,而且还允许运行时配置管理。

运行docker时,可以使用run命令的环境变量选项

$ docker run -e“ deep =紫色” …

2020-06-17