什么工具可以管理Docker容器按顺序启动?

时间:2015-06-16 02:57:34

标签: docker containers

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

1 个答案:

答案 0 :(得分:3)

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

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;'