在容器内运行服务时,比如说 mongodb,命令
docker run -d myimage
将立即退出,并返回容器 ID。在我的 CI 脚本中,我在运行 mongo 容器之后立即运行一个客户端来测试 mongodb 连接。问题是:客户端无法连接,因为服务还没有启动。除了在我的脚本中添加一个大的 sleep 10
之外,我看不到任何等待容器启动并运行的选项。
Docker 有一个命令 wait
在这种情况下不起作用,因为容器不存在。这是docker的限制吗?
原文由 Gravis 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如在 docker 1.12 的 类似问题 中所评论的那样
这从 docker 1.12rc3 (2016-07-14) 开始可用
docker-compose
正在 支持等待特定条件的功能。你可以像这样在 Dockerfile 中使用它:
官方文档: https ://docs.docker.com/engine/reference/builder/#/healthcheck