2013-08-08 4 views
2

Я реализовал простой REST API с помощью Dropwizard и попытался запустить его на Heroku. Я застрял в точке, где хочу получить доступ к postgresql DB на Heroku. Я не могу получить доступ к конфигурации на Heroku. У меня есть конфигурационный VARS установить на Heroku, как показано ниже:Не удается получить доступ к конфигурации конфигурации Heroku в файле конфигурации yaml dropwizard

$ 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") 

Но ни одна из этих работ не работает.

Если я заменяю фактические значения, то мой сервис работает.

Может ли кто-нибудь указать мне правильный способ разрешения/доступа к настройкам конфигурации от героку?

ответ

3

Dropwizard позволяет передавать параметры конфигурации в командной строке с помощью флагов -D (см. Примечание here), поэтому в вашем Procfile вы можете запустить свой сервер с помощью java -Ddw.database.user=$HEROKU_DATABASE_USERNAME ... -jar app.jar server, чтобы использовать переменные окружения.

+1

Спасибо, да, я могу передать параметры конфигурации, используя -D, который работает. Но я предпочел бы настройку ямля. – t4t

5

Я написал небольшое дополнение для dropwizard, которое позволяет ссылаться на переменные окружения в файле config.yml. Вы можете найти его here. Он работает, указывая $env:ENVIRONMENT_VARIABLE[:DEFAULT_VALUE] как значение для элементов массива или полей объекта в вашем файле yaml.

+0

tkrille Глядя на ваше дополнение, как вы попадаете в свойства в файле YAML из кода Java? – BSB

+0

@BSB вы можете получить свойства обычными способами, то есть просто получить их из экземпляра конфигурации вашего приложения. единственное, что делает мое дополнение, - это проанализировать все вещи '$ env: ...' до того, как произойдут замены системных свойств. см. также [здесь] (https://github.com/tkrille/dropwizard-environment-config/blob/master/src/main/java/de/thomaskrille/dropwizard/environment_configuration/EnvironmentConfigurationFactory.java#L127). –

Смежные вопросы