如何将一组值作为env变量提供给typesafe / lightbend配置?

时间:2018-05-02 11:13:21

标签: scala typesafe typesafe-config

如何为typesafe / lightbend配置提供数组/值列表作为环境变量?

application.conf

default-buckets = [
      10,
      30,
      100,
      300,
      1000,
      3000,
      10000,
      30000,
      100000
    ]
default-buckets = [${?DEFAULT_BUCKETS}]

所以,我想传递这样的东西作为环境变量,以便能够覆盖默认值:

DEFAULT_BUCKETS=1000,3000

但是,我收到以下错误:

com.typesafe.config.ConfigException$WrongType: env variables: buckets.default-buckets has type list of STRING rather than list of NUMBER

这是否可行,而不必让我的应用程序代码处理它,例如打电话给split(',')

2 个答案:

答案 0 :(得分:0)

据我所知,没有简单的方法来传递环境变量列表来覆盖conf值数组。

你必须像这样设置env vars:

export DEFAULT_BUCKETS_1=1000
export DEFAULT_BUCKETS_2=3000

然后将它们传递到conf文件中:

default-buckets = []
default-buckets.0 = ${?DEFAULT_BUCKETS_1}
default-buckets.1 = ${?DEFAULT_BUCKETS_2}

答案 1 :(得分:0)

default-buckets = [
  ${?DEFAULT_BUCKETS_1},
  ${?DEFAULT_BUCKETS_2},
  ${?DEFAULT_BUCKETS_3},
  ${?DEFAULT_BUCKETS_4},
  ${?DEFAULT_BUCKETS_5}
]

对于

DEFAULT_BUCKETS_1=10
DEFAULT_BUCKETS_2=30
DEFAULT_BUCKETS_5=100

结果

TestConfig(List(10, 30, 100))