Java 使用DockerComposeContainer从组合文件中仅启动一个服务
在TestcontainersJava 使用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”) 从的源代码来看,答案似乎是否定的,但这
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文件,该文件只包含您想要的一项服务。