如何强制 Testcontainers 使用特定的 docker 镜像?

Posted

技术标签:

【中文标题】如何强制 Testcontainers 使用特定的 docker 镜像?【英文标题】:How to force Testcontainers to use specific docker image? 【发布时间】:2021-05-13 08:09:15 【问题描述】:

我通常在Testcontainers 设置上运行我的spring-boot-test junit sql 测试,如下所示:

spring.datasource.url=jdbc:tc:mariadb:10.5.8:///test
spring.datasource.username=test
spring.datasource.password=test

问题:当我省略 docker 镜像值时,例如spring.datasource.url=jdbc:tc:mariadb:///test,如何强制始终使用固定的 docker 镜像版本?

我的目标是提供每个项目都应包含的test-commons.jar。所以项目都应该使用在 commons jar 中定义的相同的默认 mariadb 图像,而不是自己设置显式图像。

这可能吗?

【问题讨论】:

我只听说过testcontainers,但是spring.datasource.url只是一个spring属性,有很多方法可以配置它;但我可能在这里遗漏了一些东西 @Eugene 是 Testcontainers JDBC URL support。 【参考方案1】:

您可以复制MariaDBContainerProvider,使用“mymariadb”或“custommariadb”作为数据库类型,并在newInstance()中设置所需的版本。

【讨论】:

以上是关于如何强制 Testcontainers 使用特定的 docker 镜像?的主要内容,如果未能解决你的问题,请参考以下文章

在 springboot + Testcontainers 中执行特定的 SQL 填充数据库

如何使用 Testcontainers 发送信号?

如何使用特定的 docker 镜像启动测试容器?

使用 Testcontainers 时如何设置 Postgresql 的端口?

如何在多个 SpringBootTests 之间重用 Testcontainers?

如何使用 Testcontainers 将可执行文件复制到 Docker 容器