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

标签 docker configuration asp.net-core .net-core dockerfile

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

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

选项似乎是:

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

有没有人有这方面的经验?您能否提供代码示例/说明,尤其是目前看来最好的选项 2)?

最佳答案

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

添加数据卷

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

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

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

将主机目录挂载为数据卷

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

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

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

引用Docker Data Volumes

关于docker - 如何为在 docker 容器中运行的 .NET Core Web API 服务提供应用程序配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42197493/

相关文章:

c# - ASP.NET Core 2 - ReSharper "Create Razor View"将新 View 添加到 Pages 文件夹

c# - AddAuthentication + RequireAuthenticatedUser = 多余?

asp.net-core - AssumeDefaultVersionWhenUnspecified 未按预期工作

java - 控制 java.io.tmpdir 的环境变量?

python - ZeroMQ 无法在 [0.0.0.0 :5555] - address already in use. 上的 Docker 上进行 .bind() 为什么?

mongodb - 带有副本集的 Mongo 容器,在 docker-compose 中只有一个节点

docker - 使用 Docker 设置多个 MQTT 代理

windows - 如何从 Windows XP 的上下文菜单中更改 "Edit"和 "Print"操作的默认应用程序?

c# - 在许多应用程序之间共享连接字符串

amazon-web-services - 初始加载后 AWS Fargate 502 网关错误