hibernate - 构建/码头化具有数据库连接的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
因此,我想将我的问题分为两个:
gradle test
与 一起执行的任务是否应该gradle build
尝试测试数据库连接?它在尝试引导 Spring Boot 应用程序时默认执行此操作 - 这就是我的gradle build
任务失败的原因。不知何故,我认为这不是最好的选择——在我看来,单元测试不应该依赖于任何外部因素,比如数据库连接。gradle build
先跑再跑是个好主意docker build
吗?还是应该一口气完成所有事情?然后我至少可以在docker run
. 但是话又说回来,我不想在不知道构建正常并且所有测试都已通过的情况下构建 docker 映像。
解决方案
回答您的问题:
- 依我拙见,一般来说,
gradle test
应该在gradle build
. 除非您的数据库测试是其中一项测试,否则如果您只使用它来收集测试信息,我会gradle test
在数据库检查后执行。 - 是的,这样做是个好主意:
- 第一的,
docker build
- 第二,
docker run -e USERNAME=XXXX -e PASSWORD=XXXX...
- 第三,
gradle build
在docker里面。
- 第一的,
推荐阅读
- javascript - 将 javascript 变量设置为具有不同文本的按钮的值
- java - 如何使用 WordToHtmlConverter 和 HWPFDocument 限制页面输出?
- python - 如何在python中按绝对值对多维列表进行排序
- android - 当用户点击 TextInputLayout 时应用程序随机崩溃
- android - 如何检查是否已收到广播?
- java - 您可以从 Java 中的数组中的值一次分配多个变量吗?
- node.js - NodeJS 服务器无法从 Angular 检索发布数据
- jquery - 从角度4中的动态输入字段提交数组值
- java - 如何解决“javax.net.ssl.SSLHandshakeException:通用 SSLEngine”
- vba - 从列表中复制元素“n”次,EXCEL VBA