首页 > 解决方案 > 构建/码头化具有数据库连接的springBoot应用程序的最佳实践是什么?

问题描述

我有一个弹簧启动应用程序,它具有以下内容application.properties

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@ldap:something
spring.datasource.username=${USERNAME}
spring.datasource.password=${PASSWORD}

如您所见,它取决于一些环境变量。我的最终目的地是 docker 映像,但在此之前我运行任务 - 当然,它失败了,因为它在环境变量中gradle build找不到USERNAME和。PASSWORD

因此,我想将我的问题分为两个:

  1. gradle test与 一起执行的任务是否应该gradle build尝试测试数据库连接?它在尝试引导 Spring Boot 应用程序时默认执行此操作 - 这就是我的gradle build任务失败的原因。不知何故,我认为这不是最好的选择——在我看来,单元测试不应该依赖于任何外部因素,比如数据库连接。

  2. gradle build先跑再跑是个好主意docker build吗?还是应该一口气完成所有事情?然后我至少可以在docker run. 但是话又说回来,我不想在不知道构建正常并且所有测试都已通过的情况下构建 docker 映像。

标签: hibernatedockerspring-bootgradle

解决方案


回答您的问题:

  1. 依我拙见,一般来说,gradle test应该在gradle build. 除非您的数据库测试是其中一项测试,否则如果您只使用它来收集测试信息,我会gradle test在数据库检查后执行。
  2. 是的,这样做是个好主意:
    • 第一的,docker build
    • 第二,docker run -e USERNAME=XXXX -e PASSWORD=XXXX...
    • 第三,gradle build在docker里面。

推荐阅读