使用 DockerComposeContainer 从 compose 文件仅启动一项服务

bea*_*ice 5 java docker docker-compose testcontainers

是否可以以某种方式在 Testcontainers 中仅运行特定服务DockerComposeContainer

按照官方文档的例子,我们可以只启动Redis吗?对我来说,所有服务始终启动(并且我是否使用该withExposedService方法并不重要)。

我的意思是这样的方法:

new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
        .composeUpService("redis_1")
Run Code Online (Sandbox Code Playgroud)

小智 5

从DockerComposeContainer的源代码来看,答案似乎是否定的,但这只是因为DockerComposeContainer.runWithCompose是私有的。

从该方法在其他地方的使用来看,似乎DockerComposeContainer.createServices所需要做的就是公开runWithCompose,并且您可以拥有完整的 docker-compose 命令集,允许类似以下内容:

new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
      .runWithCompose("run -d redis");
Run Code Online (Sandbox Code Playgroud)

(以及其他docker-compose run选项)。

这是 github 上一个非常活跃的项目,因此您可能会通过问题提交或更好的拉取请求来获得关注。