这是我的问题:我计划在不同的域(不同的服务器)上部署相同的应用程序。拜托,不要问为什么……就照原样吧;)
好吧,我需要这两个应用程序来加载不同的 cfg 文件,并且我想使用站点域作为在启动时加载正确的 cfg 文件的密钥。
如何访问此信息?
这是我的问题:我计划在不同的域(不同的服务器)上部署相同的应用程序。拜托,不要问为什么……就照原样吧;)
好吧,我需要这两个应用程序来加载不同的 cfg 文件,并且我想使用站点域作为在启动时加载正确的 cfg 文件的密钥。
如何访问此信息?
您通常只能通过请求中的主机访问它,因此不会为您削减它。在启动应用程序的每个实例时,我只需指出具有 config-file-system 属性的域特定配置文件。
查看配置文件选择属性: http ://www.playframework.com/documentation/2.2.x/Configuration
暂存的应用程序启动脚本将-Dsystem.property.name=value
其转发到 jvm,因此您应该能够使用它。
我解决了在操作系统中设置环境变量的问题:
有关更多详细信息,请参阅此链接
https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
我选择了这个解决方案,因为我需要以下两者:
- 由所有实例共享的主要大型配置数据
集 - 特定于每个实例的自定义小型配置数据集
我最终得到:
1)创建一个包含所有自定义设置数组的单个 JSON 文件
2)设置一个包含应用程序域名的 ENV 变量。
我使用 ENV 变量作为访问这个 JSON 数组的键。
在我的操作系统中:
export ENV_VAR='www.mydomain2.net'
在我的 application.conf 中:
my.domain.name=${?ENV_VAR}
我的 JSON 是这样的:
{ "domains": [
"www.mydomain1.net": { "setting1": "aValue1", "setting2": "aValue2" },
"www.mydomain2.net": { "setting1": "aValue3", "setting2": "aValue4" }
]}