我最近读到了一篇关于“依赖于环境的属性应该存储在哪里?”的辩论。
典型的方法是拥有多个属性文件,其中一个是按环境设置的,并且基于一个环境变量(DEV,PROD.),在启动应用程序时选择读取它们的位置(比如Spring概要文件)。
另一方面,如果您使用容器来部署应用程序,据说这种配置应该来自环境本身(使用应用程序读取的环境变量),因此映像不会在不同环境之间发生变化。
每种方法的优缺点是什么?对于容器场景是否有“最佳”方法?
发布于 2017-04-20 18:02:32
谁说属性文件和环境变量在哪里互相排斥?
在“我把我的应用程序配置存储在哪里?”之间有一个区别。以及“我的应用程序的配置来源在哪里?”
最可能的结果是,每个人都应该继续使用配置文件作为存储机制(只要环境存在,就考虑长期的、持久的状态)。
但是,与其将配置文件放到应用程序上下文中并让它运行,不如让应用程序能够期望这些变量在启动时已经在环境中可用。
这意味着你需要有两个部署工作流程-
要使用一个示例,将环境变量管理为consul这样的工具中的键值对,如果您要将配置文件存储在git中,那么git2consul之类的工具将该配置更新到环境中。
如果您有一个期望配置可用的应用程序作为配置文件,那么您可以避免将配置文件的多个副本与应用程序一起发送,方法是构建一个部署过程,该过程具有将领事值转换回文件的能力。
https://devops.stackexchange.com/questions/977
复制