正在测试 docker 图片。使用 exec 轻松启动并获取日志
Testing docker image. Easy start with exec and get log
我为 CI 创建了一个小应用程序。这个应用程序非常简单,它打印到控制台 属性,我将其设置为选项,然后退出。
我可以在我的 cmd 中执行它(我使用 windows),像这样:
docker run --rm myImage:latest say --param "hello world"
我在 cmd 中看到“hello world”。
现在我想在我的形象上写测试。我使用 Kotlin 作为主要语言,Junit5 作为测试框架,com.github.dockerjava.api.DockerClient 作为 Docker 客户端。我想写这样的简单测试:
@Testcontainers
class Test{
val dockerImageId = System.getProperty("dockerImageId ")
var dockerClient = DockerClientFactory.instance().client()
@Test
fun init() {
val log = dockerClient.stratContainerFromImageId(dockerImageId).withExec("say --param \"hello world\"").getLog()
assertEqals("hello world", log)
}
}
在 Docker 客户文档的糟糕夜晚之后,我可以像这样开始图像:
dockerClient.startContainerCmd(dockerClient.createContainerCmd(dockerId).exec().id).exec()
但是当我打开 LogContainerCmd 并开始学习 ResultCallback 时,我想死!
我正在寻找简单的测试方法。现在怎么样了?
为什么不按照文档中的建议创建一个容器作为测试 class 字段?
https://www.testcontainers.org/quickstart/junit_5_quickstart/ 从第 2 部分开始
然后你可以 运行 命令,然后执行 execResult.getStdout()
或 container.getLogs()
我为 CI 创建了一个小应用程序。这个应用程序非常简单,它打印到控制台 属性,我将其设置为选项,然后退出。 我可以在我的 cmd 中执行它(我使用 windows),像这样:
docker run --rm myImage:latest say --param "hello world"
我在 cmd 中看到“hello world”。 现在我想在我的形象上写测试。我使用 Kotlin 作为主要语言,Junit5 作为测试框架,com.github.dockerjava.api.DockerClient 作为 Docker 客户端。我想写这样的简单测试:
@Testcontainers
class Test{
val dockerImageId = System.getProperty("dockerImageId ")
var dockerClient = DockerClientFactory.instance().client()
@Test
fun init() {
val log = dockerClient.stratContainerFromImageId(dockerImageId).withExec("say --param \"hello world\"").getLog()
assertEqals("hello world", log)
}
}
在 Docker 客户文档的糟糕夜晚之后,我可以像这样开始图像:
dockerClient.startContainerCmd(dockerClient.createContainerCmd(dockerId).exec().id).exec()
但是当我打开 LogContainerCmd 并开始学习 ResultCallback 时,我想死!
我正在寻找简单的测试方法。现在怎么样了?
为什么不按照文档中的建议创建一个容器作为测试 class 字段? https://www.testcontainers.org/quickstart/junit_5_quickstart/ 从第 2 部分开始
然后你可以 运行 命令,然后执行 execResult.getStdout()
或 container.getLogs()