Dropwizard падает на Heroku

Я пытаюсь развернуть свой проект Dropwizard в Heroku.

Я добавил Procfile и Postgres DB в приложение Heroku. Мой Procfile читает:

web: java $JAVA_OPTS -Ddw.server.connector.port=$PORT -Ddw.database.url=$DATABASE_URL -jar target/api-1.0-SNAPSHOT.jar server config.yml

Когда я пытаюсь выполнить развертывание, я получаю следующее сообщение об ошибке / сбое в журналах.

org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator: HHH000342: Could not obtain connection to query metadata : Driver:org.postgresql.Driver@53d13cd4 returned null for URL:postgres://fdeqzbddzbefaz:138912590e989b1b8fab5d169a1aea291f04b2d3bc040b1bbf6642a9207a5355@ec2-54-235-101-91.compute-1.amazonaws.com:5432/d67crr4pvqrfee
Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
State changed from starting to crashed
Process exited with status 1

Мой config.yml читает

database:
 # the name of your JDBC driver
 driverClass: org.postgresql.Driver

 # the username
 user: localusername

 # the JDBC URL
 url: jdbc:postgresql://localhost/dbname

# use the simple server factory if you only want to run on a single port
# HEROKU NOTE - the port gets be overridden with the Heroku $PORT in the Procfile
server:
  type: simple
  applicationContextPath: /
  #adminContextPath: /admin # If you plan to use an admin path, you'll need to also use non-root app path
  connector:
    type: http
    port: 8080

У кого-нибудь есть проблемы со съемкой идей?

1 ответ

Решение

DATABASE_URL env var не совместим напрямую с форматом URL JDBC. Смотрите документы. В частности,

DATABASE_URL для дополнения Heroku Postgres соответствует следующему соглашению

Postgres: // имя пользователя: пароль @ хост: порт / имя_бд

Однако драйвер Postgres JDBC использует следующее соглашение:

JDBC: PostgreSQL: // хост: порт / имя_бд пользователя = имя пользователя и пароль = пароль

Вместо этого попробуйте использовать JDBC_DATABASE_URL как задокументировано здесь

Другие вопросы по тегам