Compose 启动顺序控制
你可以通过 depends_on 选项控制服务启动顺序。Compose 总是按照依赖的顺序启动和停止容器,依赖包括 depends_on
,links
,volumes_from
以及 network_mode: "service:..."
。
Compose 启动不会等到容器中服务就绪,而只要容器启动即可。简单来说,Compose 不管这一层,官档的意思是应用程序应该考虑应对依赖的服务没有启动的情况。最好的方式就是代码中处理好这块逻辑,如果不行的话可以封装一些脚本曲线解决问题:
使用如 wait-for-it,dockerize 或者 shell 兼容的 wait-for 这类的工具。这些小型的封装脚本,可以把这些加入到镜像中,以轮询给定的主机和端口,直到它接受 TCP 连接为止。如使用
wait-for-it.sh
或者wait-for
封装你的服务命令:
使用这类的工具好处使方便,坏处也有,比如服务端口监听并不表示服务已经可以对外提供服务了,这种细粒度的事情,这些脚本做不了,可以使用下面的解决方式。
或者编写自己的封装脚本以执行更特定于应用程序运行状态的检测,如等到 Postgres 准备好接受命令为止:
定制好了之后通过如下方式设置:
最后更新于