我正在使用 Docker 部署我的 ASP.NET Core Web API 微服务,并且正在查看将配置注入(inject)每个容器的选项。在应用程序根目录中使用 appsettings.json 文件的标准方法并不理想,因为据我所知,这意味着将文件构建到我的 docker 镜像中,这将限制镜像可以运行的环境。
我想一次构建一个镜像,可以在运行时为它们提供配置并通过开发、测试 UAT 并进入生产环境,而无需为每个环境创建一个镜像。
选项似乎是:
- 通过环境变量提供配置。看起来有点乏味。
- 以某种方式将容器中的路径映射到 appsettings.json 所在的主机服务器上的标准位置,并让服务获取它(如何?)
- 是否可以在 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 - 如何为在 docker 容器中运行的 .NET Core Web API 服务提供应用程序配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42197493/