docker - 由于没有可用的 Postgresql 实例,Spring Boot 和 Postgresql 应用程序在 docker 中构建失败
问题描述
我有一个想在 docker 环境中构建和运行的 Spring Boot 应用程序。
我的 docker 文件如下所示:
FROM maven:3.6.0-jdk-11-slim AS Build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package -Pdocker
#
# Package stage
#
FROM openjdk:11-jre-slim
COPY --from=Build /home/app/target/academy*.jar /usr/local/lib/academy.jar
EXPOSE 8080
ENTRYPOINT ["java", "-Dspring.profiles.active=docker", "-jar","/usr/local/lib/academy.jar"]
我的 docker-compose 文件如下所示:
version: "3"
services:
postgres:
image: postgres:13
network_mode: bridge
container_name: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
expose:
- 5432
ports:
- 5432:5432
environment:
- POSTGRES_PASSWORD=docker
- POSTGRES_USER=docker
- POSTGRES_DB=academy
restart: unless-stopped
# This is my rest api app*****************************************
academy:
build:
context: ../IdeaProjects/academy
image: academy:1.0
network_mode: bridge
container_name: academy
depends_on:
- postgres
expose:
- 8081
ports:
- 8081:8081
volumes:
- /home/pramod/Desktop:/var/tmp
restart: unless-stopped
volumes:
postgres-data:
当我运行 docker-compose build 时,它失败并出现错误
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
... 17 common frames omitted
是否有可能在为 spring 应用程序构建映像之前启动 postgresql 数据库?
解决方案
推荐阅读
- mysql - 根据派生值最大值选择行
- r - R:没有重复的键,数据不会传播
- javascript - 使用 D3.js 有条件地附加 HTML 元素的正确方法是什么?
- firebase - 恐慌:运行时错误:无效的内存地址或 nil 指针取消引用 [信号 SIGSEGV:分段违规 firebase.google.com/go.(*App).Database
- shell - AWK,比较两个文件,然后比较匹配的另一个字段并进行算术运算
- javascript - 如何在 highcharts 多个向下钻取上添加滚动
- javascript - 为什么将 Buefy 导入我的 Vuejs 项目会使
- excel - 有没有办法使用 Google appscript 从 Bigquery 结果生成 Microsft Excel?
- python - kivy中的登录界面
- php - 如果条件允许,则创建视图表