是否有可能只运行特定的服务?
获取官方文档: https://github.com/testcontainers/testcontainers-java/blob/master/docs/usage/docker_compose.md
在上面的示例中,我们可以开始说redis吗? 对我来说,所有服务始终在启动(并且是否使用withExposedService都没有关系)。
我的意思是这样的方法: new DockerComposeContainer(new File(“ src / test / resources / compose-test.yml”))。composeUpService(“ redis”)
答案 0 :(得分:3)
从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
options)。
这是github中一个非常活跃的项目,因此您可以通过提交问题或更好的请求请求来吸引他们。
答案 1 :(得分: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")