【问题标题】:How to connect to heroku postgres using docker spring boot app?如何使用 docker spring boot 应用程序连接到 heroku postgres?
【发布时间】:2020-02-19 16:10:43
【问题描述】:

我正在尝试从我部署到 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}

【问题讨论】:

  • 也许你应该了解一下 Docker 和 Spring-Boot。顺便说一句,你得到这个RuntimeException 是正常的,名为{JDBC_DATABASE_URL} 的变量被调用但从未创建过。
  • 谢谢你,@Zorglube。你能给我指出一个资源,在那里我可以学习如何创建变量,这样我就不会得到异常?

标签: java spring spring-boot docker heroku


【解决方案1】:

JDBC_DATABASE_URLHeroku buildpack 设置。当你使用 Docker 时,你不能使用 buildpacks。如果您想模仿 buildpack 的功能,您可以复制此 JDBC Profile script(但如果情况发生变化,您必须手动更新)。

【讨论】:

  • 感谢@codefinger!在heroku上使用docker时,使用postgres插件还是postgres docker镜像更好?
  • 你不能在 heroku 上运行 postgres 图像
  • 这是否意味着没有正确的方法来使用 Heroku 上的 docker 使用 Postgres Heroku 插件运行 Spring Boot 应用程序?
猜你喜欢
  • 2016-02-11
  • 2019-11-06
  • 2020-07-29
  • 2019-08-28
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2021-05-21
相关资源
最近更新 更多