Scala-Spray框架中的两个配置文件

时间:2015-05-20 19:58:06

标签: scala akka spray

我有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系统属性或环境变量

1 个答案:

答案 0 :(得分:0)

是的,您可以在运行时选择配置。喷雾& akka使用typesafe配置库,它允许使用JVM属性设置单个设置或整个配置。

来自documentation of config

  

对于使用application.{conf,json,properties}的系统的应用程序   属性可用于强制使用不同的配置源:

     
      
  • config.resource指定资源名称 - 不是基本名称,即application.conf而非application
  •   
  • config.file指定文件系统路径,同样应该包含扩展名,而不是基本名称
  •   
  • config.url指定网址
  •   
     

这些系统属性指定了替换   application.{conf,json,properties},而不是补充。他们只   使用默认的ConfigFactory.load()配置影响应用。在   替换配置文件,您可以使用include "application"   包括原始默认配置文件;在include语句之后   你可以继续覆盖某些设置。