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

我正在使用Docker来部署我的ASP.NET Core Web API微服务,并且正在查看将configuration注入到每个容器的选项。 在应用程序根目录中使用appsettings.json文件的标准方式并不理想,因为就我所见,这意味着将文件构build到我的泊坞窗图像中,这会限制图像可以运行的环境。

我想要构build一个图像,在运行时可以提供configuration,并通过开发工具,testingUAT进入生产环境,而无需为每个环境创build图像。

选项似乎是:

  1. 通过环境variables提供configuration。 似乎有点乏味。
  2. 以某种方式将容器中的path映射到appsettings.json所在的主机服务器上的标准位置,然后让服务select它(如何操作)?
  3. 可以在docker运行命令行上提供值吗?

有人对此有经验吗? 你能提供代码示例/方向,特别是关于选项2),这似乎是目前最好的?

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

所以,现在我们正在这样做:

  1. 使用外部configurationpipe理系统来保存和pipe理每个环境的configuration
  2. 注入我们的软件包的基本环境variables来保存configurationpipe理系统的连接细节

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

在运行docker时,可以使用run命令的环境variables选项 :

$ docker run -e“deep = purple”…

可以在Docker镜像/容器中创build数据卷。 还要将主机目录挂载到容器中。 主机目录可以在容器内访问。

添加数据量

您可以使用docker create和docker run命令使用-v标志将数据卷添加到容器。

 $ docker run -d -P --name web -v /webapp training/webapp python app.py 

这将在/ webapp的容器内创build一个新卷。

将主机目录挂载为数据卷

除了使用-v标志创build卷之外,还可以将Docker引擎主机的目录挂载到容器中。

 $ docker run -d -P --name web -v /src/webapp:/webapp training/webapp python app.py 

该命令将主机目录/ src / webapp安装到/ webapp的容器中。

请参阅Docker数据卷