【问题标题】:Two Configuration files in Scala-Spray frameworkScala-Spray 框架中的两个配置文件
【发布时间】:2015-05-20 19:58:05
【问题描述】:

我有 REST API,它是使用 Scala 和 Spray 框架开发的。我能够从 localhost 执行和启动我的 Api。 API 连接到数据库。从资源下的“application.conf”文件中读取数据库的 IP 地址(localhost)和端口。

在我开始使用 Docker 之前一切正常。在 Docker 中,我有: 1.Rest API的Docker容器1个 2. 一个数据库的Docker容器。

每个 docker 实例的数据库 IP 地址都会发生变化,因此我需要更新我的“application.conf”文件。虽然我可以使用保持不变的 Db 实例的主机名。

我的问题是:我可以有两个“application.conf”文件,一个用于本地主机,一个用于 Docker 实例吗?有没有办法在运行时更改“application.conf”文件。

P.s 我正在使用“sbt run”来运行应用程序,根据文档,它不支持 java 系统属性或环境变量

【问题讨论】:

    标签: scala akka spray


    【解决方案1】:

    是的,您可以在运行时选择配置。 spray & 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" 包括原始的默认配置文件;在包含语句之后 您可以继续覆盖某些设置。

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 2019-04-29
      • 2012-11-28
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2018-03-13
      相关资源
      最近更新 更多