如何使用Docker Spring Boot App连接到Heroku Postgres?

时间:2019-10-23 12:00:14

标签: java spring spring-boot docker heroku

我正在尝试从部署到heroku的docker应用程序连接到我配置的heroku postgres数据库(不是docker映像)。当我将按钮推送到heroku时,图像可以正常显示,但是当应用程序启动时,出现错误。似乎JDBC_DATABASE_URL没有被注入到docker容器中,但是我不知道如何使它工作。

这是我的代码:

heroku.yml

build:
  docker:
    web: Dockerfile

Dockerfile

FROM openjdk:8-jdk-alpine
COPY build/libs/myapp-0.0.1-SNAPSHOT.jar app.jar
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

application.properties

## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url=${JDBC_DATABASE_URL}
spring.datasource.username=${JDBC_DATABASE_USERNAME}
spring.datasource.password=${JDBC_DATABASE_PASSWORD}

# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.show-sql=true


# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto=update

例外

java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, ${JDBC_DATABASE_URL}

1 个答案:

答案 0 :(得分:0)

JDBC_DATABASE_URLHeroku buildpack设置。使用Docker时,您无需使用buildpacks。如果您想模仿buildpack的功能,则可以复制此JDBC Profile script(但是如果情况有所变化,则必须手动更新)。