测试容器中 StartupCheckStrategy 和 WaitStrategy 的区别

Difference between StartupCheckStrategy and WaitStrategy in test containers

最近我们遇到了一些测试容器的启动时间问题: 慢速计算机无法在硬编码的 30 秒内启动容器。

问题已通过将所有检查移至具有可配置超时的 WaitStrategy 得到解决。

是否有任何理由保留这两张支票? 在 StartupCheckStrategy 和 WaitStrategy 中应该检查什么?

抱歉有点混乱!

StartupCheckStrategy 用于检查 Docker 是否成功启动了容器。有几个不同的变体,但基本上只是 'did the container reach the RUNNING state?'.

虽然容器是 运行,但这并不意味着它实际上已经准备好做任何有用的事情(例如接受连接或工作)——这就是 WaitStrategy 的意思为了。默认的等待检查只是简单地探测以确保 TCP 端口正在侦听,但您可以使用更复杂的检查来覆盖这些,例如尝试通过驱动程序建立连接或查找日志字符串。

听起来您将检查转移到 WaitStrategy 实施是正确的。再次抱歉,这令人困惑;我们显然需要对文档做一些工作,使其更易于理解和更一致。