Spring 如何使用特定的docker映像启动testcontainers?

Spring 如何使用特定的docker映像启动testcontainers?,spring,junit,spring-boot-test,testcontainers,Spring,Junit,Spring Boot Test,Testcontainers,我有一个junit测试,使用testcontainers-1.15.1。如何启动显式映像?因为: @SpringBootTest public class ContainerTest { private final JdbcDatabaseContainer DB = new MariaDBContainer("mariadb:10.5.8"); static { DB.start(); } @Test public

我有一个
junit
测试,使用
testcontainers-1.15.1
。如何启动显式映像?因为:

@SpringBootTest
public class ContainerTest {
   private final JdbcDatabaseContainer DB = new MariaDBContainer("mariadb:10.5.8");
  
   static {
       DB.start();
   }
   
   @Test
   public void test() { 

   } 
}
结果:启动默认的
10.3.6
容器

[][] 2021-02-04 14:32:50,741 INFO ?.3.6]: Creating container for image: mariadb:10.3.6
[][] 2021-02-04 14:32:51,597 INFO ?.3.6]: Container mariadb:10.3.6 is starting: d9ccf77f4b9165ccd1690ee5cb8437f43e7d853dfe5121d468a391d67eccef7d
application.properties

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

这可能是由于过去不同Testcontainers模块的构造函数的行为不一致所致。它是用Testcontainers 1.15.0修复的,并且应该可以从Testcontainers 1.15.0开始使用

不确定您的示例是否为伪测试代码,但以下示例是一个有效的复制可复制示例:

public class MariaDbContainerTest {

  private static final JdbcDatabaseContainer DB = new MariaDBContainer("mariadb:10.5.8");

  static {
    DB.start();
  }

  @Test
  public void test() {

  }
}
我已经对Testcontainers 1.15.0和1.15.1进行了测试,它在我的机器上运行

更新:我没有看到除了作为测试的一部分的手动容器定义之外,您还在
应用程序.properties
文件中指定了对TestContainer的JDBC支持

选择JDBC支持或手动容器定义,您的问题应该得到解决


在使用JDBC支持时,您还可以指定数据库的版本:
JDBC:tc:mariadb:10.5.8:///test

您使用的是哪个版本的Testcontainers?奇怪,我也使用1.15.1。这可能是缓存问题吗?是否有testcontainers显式缓存?我不知道。但是您仍然可以尝试首先删除相关的Docker映像,我必须在何处删除它?在shell中,使用以下命令
Docker rmi
。使用
docker images
您可以获得所有下载图像的概览。是的,可以。我还刚刚了解到,不幸的是,仅从类路径强制重用是不可能的。