Maven 在 Spring 项目构建中尝试与数据库建立连接失败

2023-12-07

我为我的 spring 项目制作了 docker-compose 和 dockerfile,但它在 Maven 构建阶段失败,因为正在尝试与 postgres 服务建立连接,我不知道如何解决它。

这是我的 docker-compose 文件:

version: '3'
services:

  postgres:
    build:
      context: .
      dockerfile: docker/postgres/Dockerfile
    restart: always
    environment:
      POSTGRES_DB: ${postgres_database}
      POSTGRES_USER: ${postgres_username}
      POSTGRES_PASSWORD: ${postgres_password}
    ports:
      - '5432:5432'
    volumes:
      - ./pgdata:/var/lib/postgresql/data

  api:
    build:
      context: .
      dockerfile: docker/jdk/Dockerfile
    restart: always
    environment:
      postgres_database: ${postgres_database}
      postgres_username: ${postgres_username}
      postgres_password: ${postgres_password}
    ports:
      - '8100:8080'
    depends_on:
      - postgres

我的 postgres dockerfile:

FROM postgres:11-alpine

ENV POSTGRES_DB: ${POSTGRES_DB}
ENV POSTGRES_USER: ${POSTGRES_USER}
ENV POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}

COPY ./docker/postgres/init.sql /docker-entrypoint-initdb.d

EXPOSE 5432

我的 jdk dockerfile 是我在其中构建项目(失败)并运行 jar 的:

FROM maven:3.6.0-jdk-11-slim AS build

COPY ./src /usr/src/app/src
COPY ./pom.xml /usr/src/app

RUN mvn -f /usr/src/app/pom.xml clean package

FROM adoptopenjdk/openjdk11:jre11u-alpine-nightly

COPY --from=build /src/usr/src/app/target/logger_service-0.0.1-SNAPSHOT.jar /usr/src/app/app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/usr/app/app.jar"]

错误日志:

[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 14.844 s <<< FAILURE! - in cl.getcolors.loggerservice.LoggerServiceApplicationTests
[ERROR] contextLoads(cl.getcolors.loggerservice.LoggerServiceApplicationTests)  Time elapsed: 0.014 s  <<< ERROR!
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
Caused by: org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
Caused by: java.net.UnknownHostException: postgres

我该如何修复它?


我找到了解决方案,maven 尝试执行应用程序的测试,以便它根据配置执行对数据库的调用,这是通过 mvn clean package 命令发生的。 -DskipTests 必须将指令添加到运行maven no测试的命令中,这样才能正确构建。

mvn clean package -DskipTests

我的 dockerfile 现在看起来像这样并且工作正常:

FROM maven:3.6.0-jdk-11-slim AS build

COPY ./src /usr/src/app/src
COPY ./pom.xml /usr/src/app

RUN mvn -f /usr/src/app/pom.xml clean package -DskipTests

FROM adoptopenjdk/openjdk11:jre11u-alpine-nightly

COPY --from=build /src/usr/src/app/target/logger_service-0.0.1-SNAPSHOT.jar /usr/src/app/app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/usr/app/app.jar"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 在 Spring 项目构建中尝试与数据库建立连接失败 的相关文章

  • MySQL 和 Hibernate 之间的主键自增由谁负责?

    MySQL CREATE TABLE role id role INT 11 unsigned NOT NULL AUTO INCREMENT PRIMARY KEY id role AUTO INCREMENT 1 休眠 Entity p
  • 为什么这个基于java配置的Spring应用程序不能正常工作

    我最近开始了一个使用 Spring 框架的项目 目标是在没有 XML 配置文件 只有 Java 代码的情况下开发它 目前 我将以下文件添加到我的项目中 WebAppConfig java EnableWebMvc ComponentScan
  • 将数据传递到表单时的重定向后获取?

    我有几个场景 servlet 需要将数据从数据库检索到的记录传递到 JSP 中的表单 目前 我将此信息存储在请求中 使用 RequestDispatcher 转发到页面 一切都很好 然而 这不符合 PRG 模式 AFAIK 并且当然意味着刷
  • 在 Java 中对多语言环境字符串进行排序

    我正在尝试按字符串字段 国家 地区 对对象列表进行排序 每个国家 地区都使用其母语 阿根廷 澳大利亚 奥地利 例如 我想要做的是让 出现在 A 国家之后 因为字母 对应于拉丁语 B 我正在尝试使用默认的 Collat er 但非拉丁名称仍然
  • Java 正则表达式中 \w 和 \b 的 Unicode 等效项?

    许多现代正则表达式实现解释 w字符类简写为 任何字母 数字或连接标点符号 通常 下划线 这样 正则表达式就像 w 匹配像这样的词hello l ve GO 432 or gefr ig 不幸的是 Java 没有 在爪哇 w仅限于 A Za
  • 如何将docker postgres镜像10.3中的pg_restore升级到10.5

    我使用 tableplus 作为我的一般管理员 目前使用 10 3 版本的 docker postgres 镜像进行生产和本地主机开发 因为tableplus将他们的postgres 10驱动程序升级到了10 5 所以我不能再使用pg re
  • Java 8 流排序字符串列表[重复]

    这个问题在这里已经有答案了 我正在流上调用排序方法 java 文档说 Sorted 方法返回一个由该流的元素组成的流 并根据自然顺序排序 但是当我运行下面的代码时 List
  • 如何修复XSS漏洞

    我们正在使用 fortify 扫描 java 源代码 它抱怨以下错误 Method abc sends unvalidated data to a web browser on line 200 which can result in th
  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库
  • swing - 在 JPanel 上单击组件

    好的 我有一个带有 GridLayout 的 JPanel 网格的每个单元格都包含另一个 JPanel 我希望能够做的是在 下方 JPanel 上有一个侦听器 然后它告诉我单击了哪个 覆盖 JPanel 这样我就可以对它和周围的 JPane
  • 配置 openjpa 到 spring boot

    我试图在 Spring 启动时将 Hibernate 的默认 JPA 实现更改为 OpenJPA 我在 google 上搜索过 但没有太多关于如何将 openJPA 配置为 Spring boot 的信息 任何意见将是有益的 谢谢 Conf
  • Android-如何在指定时间后台下载数据

    我提前很抱歉没有发布任何代码 主要是因为我一生都无法弄清楚我需要如何做我需要做的事情 基本上 在一天中的指定时间间隔 例如下午 5 点 我希望我的应用程序从我的服务器下载一些数据并将其存储在设备上 这是为了减少每次运行应用程序时下载数据对我
  • Preg_match PHP 到 java 的翻译

    我在将 php preg match 转换为 java 时遇到一些问题 我以为我的一切都是正确的 但它似乎不起作用 这是代码 原始PHP Pattern for 44 Character UUID pattern 0 9A F 44 if
  • CellTables 和 css (GWT)

    有人可以帮我设置 CellTable 行的背景吗 拜托 我整晚都在努力做这件事 但一直失败 这是 让我发疯 我尝试过调用setRowStyles 但是那个 似乎不起作用 我读到你无法更改 设置样式后 CellTable 的样式 作为默认样式
  • 使 @Schedule 在集群环境中仅运行一次

    我有两个 tomee 实例集群 每个都有一个方法注释如下 Schedule dayOfWeek public void runMeDaily 我只想每天运行一次这个方法 每天不两次 每个实例一次 我可以使用此处描述的标志仅在一个WebLog
  • 将文件内容存储到数组中

    我的刽子手程序有问题 我真的认为我需要做的事情超出了我对java的理解 这是我的代码 import java io BufferedReader import java io FileReader import java io FileNo
  • 线程缓存和 Java 内存模型

    我正在尝试了解 Java 内存模型和线程 据我了解 每个线程都有 主 内存的本地副本 因此 如果一个线程尝试更改int变量 例如某个对象的变量 它会缓存int变量 如果它更改它 其他线程可能看不到更改 但是如果线程缓存一些对象而不是 int
  • 使用 JavaFX 和 Maven 将模块描述符添加到库中[重复]

    这个问题在这里已经有答案了 我需要使用反思 https github com ronmamo reflections在一个带有 JavaFX 的 Maven 项目中 我想使用jlink捆绑一个最小的 JRE 问题是我运行时出现以下错误mvn
  • javaFX,抛出 NullPointerException,位置是必需的

    我看过其他答案 但没有任何帮助我 抱歉 GUI新手只知道swing的基础知识 这是主课 package application import javafx application Application import javafx fxml
  • 使用 Jsoup 选择没有类的 HTML 元素

    考虑一个像这样的 html 文档 div p p p p p class random class name p div 我们怎样才能选择所有p元素 但不包括p元素与random class name class Elements ps b

随机推荐

  • GMail API超级管理员通过API访问其他用户帐户?

    我的机构目前自 2009 年初以来一直在运行 Google Apps for Education 我负责创建 删除 修改学生电子邮件帐户等 我已将所有现有的 C 应用程序从 GData 转换为新的 Admin SDK 生活很美好 上周 其中
  • EF 代码优先 - 配置一对零或一关系,无需共享 PK/FK

    我正在尝试在两个实体之间建立一对零或一的关系 并且我希望依赖实体仍包含其自己的 Indentity 列 而不是共享密钥 我想尽可能遵循约定 而不是显式声明任何不需要显式声明的内容 因此 不不必要数据注释或 Fluent api 子句 实体
  • .net JSON 日期格式

    作为 net 服务的响应 我得到以下日期格式 日期 1233323754523 0100 1233323754523 是时间戳格式的日期 但我不知道 0100 是什么意思以及如何从java代码生成它 Thanks 我假设时间戳采用 UTC
  • React Native无法连接到Android中的SSE

    我正在使用该包 https www npmjs com package react native sse 即使我从文档中复制粘贴代码 我也无法设法从 android 中的服务器接收事件 import EventSource from rea
  • 在谷歌地图中设置城市周围的边界

    我正在寻找一种使用 JavaScript 在 Google 地图 API V3 中设置特定城市 城镇周围边界的方法 API 中是否支持这种类型的事情 基本上 我不希望我的用户能够比城市更远地平移地图 包括乡村地区而不仅仅是城市范围 那么您想
  • 用 Java 下载文件。多线程,这有效吗?

    首先 每个人都需要知道我对 Java 编码还比较陌生 更准确地说 我对面向对象编程完全陌生 对于这个问题 我正在尝试创建一个下载类来更新进度条以显示其进度 可能还有我决定将来更新的其他内容 目前的问题是 在我看来 这不应该起作用 我可以在
  • 如何检查用户是否在 Firebase 和 Express/Node.js 中经过身份验证?

    如果我有一个页面只能由经过身份验证的用户访问 我如何检查用户是否经过身份验证 我尝试使用 firebase auth currentUser null 但我收到一条错误消息 TypeError firebase auth is not a
  • Pyplot 在缩放时保持文本大小

    我想在 pyplot 图中包含一些文本 并且能够在不改变比例的情况下放大它 请参阅下面的情节示例 我希望发生什么以及实际发生了什么 重现错误的代码 import matplotlib pyplot as plt plt plot 0 0 1
  • 如何从clickhouse中的json中提取json?

    我的基地有一个 json a 1 b 2 c d 3 e str 1 d 4 e str 2 我需要获取每个键的所有唯一值 但在提取键 d 和键 e 的值时遇到一些问题 Using SELECT DISTINCT JSONExtractRa
  • 如何改变gitbook的代码填充效果?

    这是stackoverflow的markdown代码效果 Code from stackoverflow Nearly no extra space at the beginning And this is the markdown cod
  • php $_SESSION 变量随机消失和重新出现

    Preface 这是一个 发展 之前的一个问题我的 他的答案最终没有解决我的问题 但是通过尝试所有建议并尝试其他东西 我发现真正的问题是别的东西 所以我在这里重新表述我的问题 我有一个登录页面 系统 多年来一直正常工作 让用户保持登录状态
  • 使用 Swift 迭代 Firebase 中的嵌套快照子项

    我正在尝试循环遍历 Firebase 数据库中的子级以检索嵌套键 我的数据库结构如下 Users Username Favorites Location Latitude 123 LocationName San Francisco Lon
  • 如何将包含基于位置的数据的列添加到 R 中的 SpatialPolygonsDataFrame 中?

    我在 R 中有空间数据 它作为SpatialPolygonsDataFrame library sp library tmap d lt readRDS data rds qtm d 例如 我使用了德国的数据http www gadm or
  • 在 Chrome 中自动录制语音输入

    我正在尝试自动记录 Google 中的语音语音输入 仅适用于 Chrome 事实上 用户必须单击麦克风才能开始录音 但我正在进行一个用户不会与计算机交互的安装 因此我必须以其他方式触发录制 就目前看来 您无法通过代码访问语音输入功能 即您无
  • 如何使用 eyed3 从 python 中的 .mp3 文件获取详细信息(标题、艺术家)

    这是我的代码 import eyed3 audiofile eyed3 load 19 Calvin Harris Summer mp3 print audiofile tag artist 这是一个错误 Traceback most re
  • 提交后保留所选值

    我有一个时间下拉选择 我想在按下提交按钮后保留所选值 此处为 HTML
  • 如何阅读PHP手册中的函数定义

    我正在浏览下面这个函数的 PHP 文档 并试图理解第二个参数之前的 是什么意思 string basename string path string suffix 为什么不简单地提及如下 string basename string pat
  • 如何找到 SwiftUI UIViewRepresentable 的框架

    我正在尝试包装一个自定义子类UILabel in UIViewRepresentable在 SwiftUI 中使用它 我在用着 sizeToFit并打印框架 当它在包装中时看起来是正确的 func makeUIView context Co
  • SML 类型推断的提示

    我是 SML 的新手 我正在尝试练习 SML 类型参考 我正在尝试演绎以下类型 a fun add42 x x 42 b fun comp F G let fun C x G F x in C end c fun compA42 x com
  • Maven 在 Spring 项目构建中尝试与数据库建立连接失败

    我为我的 spring 项目制作了 docker compose 和 dockerfile 但它在 Maven 构建阶段失败 因为正在尝试与 postgres 服务建立连接 我不知道如何解决它 这是我的 docker compose 文件