Java 使用DockerComposeContainer从组合文件中仅启动一个服务

Java 使用DockerComposeContainer从组合文件中仅启动一个服务,java,docker,docker-compose,testcontainers,Java,Docker,Docker Compose,Testcontainers,在TestcontainersDockerComposeContainer中是否可能只运行特定的服务 使用中的示例,我们可以只启动Redis吗?对我来说,所有的服务都会一直启动(无论我是否使用了withExposedService方法) 我指的是这样一种方法: new DockerComposeContainer(新文件(“src/test/resources/compose test.yml”)) .composeUpService(“redis_1”) 从的源代码来看,答案似乎是否定的,但这

在Testcontainers
DockerComposeContainer
中是否可能只运行特定的服务

使用中的示例,我们可以只启动Redis吗?对我来说,所有的服务都会一直启动(无论我是否使用了
withExposedService
方法)

我指的是这样一种方法:

new DockerComposeContainer(新文件(“src/test/resources/compose test.yml”))
.composeUpService(“redis_1”)
从的源代码来看,答案似乎是否定的,但这只是因为它是私有的

从该方法在其他地方的使用情况来看,例如,似乎只需要公开
runWithCompose
,就可以设置完整的docker compose命令集,允许如下操作:

new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
      .runWithCompose("run -d redis");
(和其他)


在github中,这是一个非常活跃的项目,因此您可以通过提交问题或更好的请求获得关注。

通过添加方法()将启动服务器子集的功能添加到Testcontainers 1.11.4中。但是,此功能在1.12.4中意外中断,在最新的1.13.0版本中仍然中断()

因此,在可用的库版本中,您可以执行以下操作以仅启动单个Redis服务:

new DockerComposeContainer(新文件(“src/test/resources/compose test.yml”))
.使用服务(“redis_1”)

作为一种解决方法,您可以创建一个单独的docker compose文件,该文件只包含您想要的一项服务。