3

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

使用官方文档中的示例,我们可以只启动 Redis 吗?对我来说,所有服务都一直在启动(我是否使用过该withExposedService方法并不重要)。

我的意思是这样的方法:

new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
        .composeUpService("redis_1")
4

2 回答 2

4

DockerComposeContainer的源代码看来,答案是否定的,而仅仅是因为DockerComposeContainer.runWithCompose它是私有的。

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

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

(和其他docker-compose run选项)。

这是 github 中一个非常活跃的项目,因此您可以通过提交问题或更好的拉取请求来获得牵引力。

于 2018-08-02T17:37:38.150 回答
0

通过添加withServices(String... services)方法 ( #1497 ) 将启动服务器子集的功能添加到 Testcontainers 1.11.4。但是,此功能在 1.12.4 中被意外破坏,并且在最新的 1.13.0 版本(#2191)中仍然被破坏。

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

new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
    .withServices("redis_1")
于 2020-04-02T22:34:52.510 回答