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

Pet*_*ter 3 configuration docker .net-core dockerfile asp.net-core

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

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

选项似乎是:

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

有任何人对此有经验吗?您能否提供代码示例/说明,特别是在选项 2) 上,这似乎是目前最好的?

Pra*_*mar 5

可以在 docker 镜像/容器中创建数据卷。并将主机目录挂载到容器中。然后可以在容器内访问主机目录。

添加数据卷

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

$ docker run -d -P --name web -v /webapp training/webapp python app.py
Run Code Online (Sandbox Code Playgroud)

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

挂载主机目录作为数据卷

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

$ docker run -d -P --name web -v /src/webapp:/webapp training/webapp python app.py
Run Code Online (Sandbox Code Playgroud)

此命令将主机目录 /src/webapp 挂载到位于 /webapp 的容器中。

请参阅Docker 数据卷