使用 DockerComposeContainer 从组合文件中仅启动一项服务
Starting only one service from a compose file with DockerComposeContainer
是否有可能以某种方式 运行 仅测试容器 DockerComposeContainer
中的特定服务?
使用the official documentation中的例子,我们可以只启动Redis吗?对我来说,所有的服务一直在启动(我是否使用了 withExposedService
方法并不重要)。
我的意思是这样的方法:
new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
.composeUpService("redis_1")
来自DockerComposeContainer, it appears the answer is no, but only because 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 中的一个非常活跃的项目,因此您可能会通过问题提交或更好的拉取请求获得关注。
通过添加 withServices(String... services)
method (#1497). However, this feature was accidentally broken in 1.12.4 and is still broken in the latest 1.13.0 release (#2191).
,Testcontainers 1.11.4 添加了启动服务器子集的功能。
在可用的库版本中,您可以执行以下操作以仅启动单个 Redis 服务:
new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
.withServices("redis_1")
是否有可能以某种方式 运行 仅测试容器 DockerComposeContainer
中的特定服务?
使用the official documentation中的例子,我们可以只启动Redis吗?对我来说,所有的服务一直在启动(我是否使用了 withExposedService
方法并不重要)。
我的意思是这样的方法:
new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
.composeUpService("redis_1")
来自DockerComposeContainer, it appears the answer is no, but only because 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 中的一个非常活跃的项目,因此您可能会通过问题提交或更好的拉取请求获得关注。
通过添加 withServices(String... services)
method (#1497). However, this feature was accidentally broken in 1.12.4 and is still broken in the latest 1.13.0 release (#2191).
在可用的库版本中,您可以执行以下操作以仅启动单个 Redis 服务:
new DockerComposeContainer(new File("src/test/resources/compose-test.yml"))
.withServices("redis_1")