什么工具可以pipe理Docker容器来启动?

我们试图将我们的系统移植到容器中,目前我们使用Puppet来尝试Docker模块,并且遇到了启动一些特定的Conainers的顺序问题。
我们有一个Web应用程序,MySQL,NginX,然后通过HAproxy进行连接。 他们每个人都住在自己的容器里。
我们在其他一些容器之前启动一些容器,例如MySQL容器必须在HAproxy之前准备好。 但是HAProxy的启动速度比MySQL快。 HAProxy检查设置的TCP连接。 由于MySQL没有准备好,我们的应用程序守护进程无法启动。除此之外,由于HAProxy正在运行,所以我们无法真正了解,剩下的服务也运行了。 (我们也不能依赖pidfile,因为即使在没有完全启动的阶段也会创build它。)
我们可以使用什么工具来处理这种情况?
或者,更好的方法是什么?

最简单的方法就是简单地向您的容器添加一个重试策略,并确保在启动时无法访问所需资源时退出:

docker run -d mysql docker run -d --restart always --link mysql:mysql nginx start_or_die.sh 

这里的start_or_die.sh脚本首先会ping到mysql进行健康检查,然后启动nginx:

 #!/usr/bin/env bash set -e mysql -u root -e 'use mydbname' nginx -g 'daemon off;'