无法在dropwizard yaml配置文件中访问Heroku环境配置

时间:2013-08-08 05:06:01

标签: heroku dropwizard heroku-postgres

我使用Dropwizard实现了简单的REST API并尝试在Heroku上启动它。 我被困在我想要访问Heroku上的postgresql DB的位置。 我无法访问Heroku上的配置。 我在heroku上设置了配置变量,如下所示:

 $ heroku config
 HEROKU_DATABASE_URL:<some value>
 HEROKU_DATABASE_USERNAME:<some value>
 HEROKU_DATABASE_PASSWORD:<some value>

我在我的dropwizard应用程序中访问它们以及config.yml中的其他配置设置:

database:
  driverClass: org.postgresql.Driver
  user: HEROKU_DATABASE_USERNAME
  password: HEROKU_DATABASE_PASSWORD
  url: jdbc:postgresql:HEROKU_DATABASE_URL

我也尝试过:

System.getenv("HEROKU_DATABASE_USERNAME")

但这些都不起作用。

如果我用实际值替换我的服务。

有人能指出我从heroku解析/访问配置设置的正确方法吗?

2 个答案:

答案 0 :(得分:5)

我为dropwizard写了一个小插件,它允许你在config.yml文件中引用环境变量。你可以找到它here。它的工作原理是将$env:ENVIRONMENT_VARIABLE[:DEFAULT_VALUE]指定为yaml文件中数组元素或对象字段的值。

答案 1 :(得分:3)

Dropwizard允许您使用-D标志在命令行上传递配置选项(请参阅注释here),因此在Procfile中,您可以使用java -Ddw.database.user=$HEROKU_DATABASE_USERNAME ... -jar app.jar server启动服务器以使用环境变量