我使用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解析/访问配置设置的正确方法吗?
答案 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
启动服务器以使用环境变量