【问题标题】:How to lookup variables in the `conf/application.conf` in the Play Framework?如何在 Play Framework 的 `conf/application.conf` 中查找变量?
【发布时间】:2017-03-19 23:08:43
【问题描述】:

简介

根据this documentation 应该可以在conf/application.conf 中查找环境变量。

使用环境变量

您还可以从您的 application.conf 文件:

my.key = defaultvalue
my.key = ${?MY_KEY_ENV}

这里,覆盖字段 my.key = ${?MY_KEY_ENV} 简单地消失,如果 MY_KEY_ENV 没有值,但是如果你设置了一个环境 例如变量 MY_KEY_ENV,它会被使用。

因为您可以从其他变量中引用变量, 确保不要将环境变量命名为与 字段名称。

例如:

MY_TOKEN = foo
MY_TOKEN = ${?MY_TOKEN} # Will reference the previous line, NOT your environmentally set variable

尝试

docker-compose.test.yml

sut:
  depends_on:
    - db
  ...
  environment:
    VAR_A: db:3306

conf/application.conf

db.default.url="jdbc:mysql://${?VAR_A}/app"

问题

由于某种原因无法查找变量:${: Name or service not known

sut_1  | [info] application - Creating Pool for datasource 'default'
sut_1  | [info] application - Creating Pool for datasource 'default'
sut_1  | [info] - should send 404 on a bad request *** FAILED ***
sut_1  | [info]   play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
sut_1  | [info]   at play.api.Configuration$.configError(Configuration.scala:154)
sut_1  | [info]   at play.api.Configuration.reportError(Configuration.scala:806)
sut_1  | [info]   at 
...
sut_1  | [info]   Cause: java.net.UnknownHostException: ${: Name or service not known
sut_1  | [info]   at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
sut_1  | [info]   at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
sut_1  | [info]   at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
sut_1  | [info]   at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
sut_1  | [info]   at java.net.InetAddress.getAllByName(InetAddress.java:1192)
sut_1  | [info]   at java.net.InetAddress.getAllByName(InetAddress.java:1126)
sut_1  | [info]   at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:190)
sut_1  | [info]   at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297)
sut_1  | [info]   at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2232)
sut_1  | [info]   at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
sut_1  | [info]   ...

问题

如何在 Play Framework 的conf/application.conf 中查找变量?

【问题讨论】:

    标签: playframework


    【解决方案1】:

    从字符串中排除变量:

    db.default.url="jdbc:mysql://"${?VAR_A}"/app"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多