2

我已经使用 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解析/访问配置设置的正确方法吗?

4

2 回答 2

5

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

于 2014-07-26T14:00:17.113 回答
3

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

于 2013-08-08T05:46:01.110 回答