将配置加载到微服务docker容器的最佳方法

时间:2017-02-22 00:33:00

标签: microservices

我已经构建了一个springboot应用程序并将其容器化。我有两种方法可以为服务注入配置。

  1. 作为application.properties文件中的代码(硬编码)的一部分 multple配置文件和我的Dockerfile只接受一个变量 -Dspring.profiles.active = $ {environment}作为启动应用程序容器的CMD的一部分
  2. exp - applciation.properties:

    弹簧:   个人资料:dev

    弹簧:   个人资料:prod

    1. 将属性文件加载到运行应用程序的主机并注入 容器启动时。
    2. exp:docker run -d --env-file = environment(dev).properties myapp:latest

      我想知道行业在具有优势和劣势的微服务应用中注入属性的最佳方式是什么。

      • 您是否将配置保持在应用附近?

      • 或者您更喜欢在app启动时将其作为依赖项注入?

      我的理解:我更喜欢靠近容器的配置,因为我可以拥有最小的依赖性,但是一个小的改变将保证新的构建和部署

      第二个选项具有优势,因为应用程序代码(图像)不需要更改,您可以通过重新启动容器来注入更新的配置。

1 个答案:

答案 0 :(得分:1)

在我的公司,我们转到第一个解决方案,但是,我不确定它是否是行业标准。主要原因是我们在构建docker容器后不太可能更改配置。

此外,如果您为不同的环境构建不同的容器,则将-Dspring.profiles.active=${environment}参数传递给容器运行命令不是很聪明(它始终是生产容器的Prod)。相反,在dockerFile中,您只需复制相应的environment.properties