我正在尝试从部署到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}
答案 0 :(得分:0)
JDBC_DATABASE_URL
由Heroku buildpack设置。使用Docker时,您无需使用buildpacks。如果您想模仿buildpack的功能,则可以复制此JDBC Profile script(但是如果情况有所变化,则必须手动更新)。