我有REST API,它是使用Scala和Spray框架开发的。我能够从localhost执行并启动我的Api。 API已连接到数据库。从资源下的“application.conf”文件中读取数据库的IP地址(localhost)和端口。
在我开始使用Docker之前一切正常。在Docker我有: 1. Rest API的一个Docker容器 2.数据库的一个Docker容器。
每个docker实例的Database更改IP地址,因此我需要更新我的“application.conf”文件。虽然我可以使用Db实例的主机名保持不变。
我的问题是:我可以有两个“application.conf”文件,一个用于localhost,一个用于Docker实例吗?有没有办法在运行时更改“application.conf”文件。
P.s我使用“sbt run”来运行应用程序,根据文档,它不支持java系统属性或环境变量
答案 0 :(得分:0)
是的,您可以在运行时选择配置。喷雾& akka使用typesafe配置库,它允许使用JVM属性设置单个设置或整个配置。
对于使用
application.{conf,json,properties}
的系统的应用程序 属性可用于强制使用不同的配置源:
config.resource
指定资源名称 - 不是基本名称,即application.conf
而非application
config.file
指定文件系统路径,同样应该包含扩展名,而不是基本名称config.url
指定网址这些系统属性指定了替换
application.{conf,json,properties}
,而不是补充。他们只 使用默认的ConfigFactory.load()
配置影响应用。在 替换配置文件,您可以使用include "application"
包括原始默认配置文件;在include语句之后 你可以继续覆盖某些设置。