正在测试 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()