我希望为docker-compose服务的启动设置一个初始化序列。Like服务'web‘应该等待'db’在docker-compose中完成。
我猜以前‘docker’就是为了这个目的而使用的,但是从版本3开始,'depends_on‘不再强加给docker服务启动顺序,因为docker想要在服务独立失败的时候随时启动它们。我想这是删除之前的等待功能的一个很好的理由。
但是,如果这是真的,那么在'db‘完全初始化并完成启动之前,我不想启动'web’服务,那么实现初始化序列的替代方案是什么呢?
如果我对这个话题的理解有误,请纠正我。
发布于 2018-07-23 15:32:13
docker compose中的依赖于支持只依赖于启动顺序,所以它实际上用处不大。
最好的方法是在从属容器之间共享一个卷,并让从属容器等待共享卷上的文件被另一个容器触及,然后再继续它需要做的事情。
例如,假设您正在恢复一个容器上的数据库,并且不希望在另一个容器中启动应用程序服务器,直到数据库启动:
在依赖容器中,用等待的入口点包装入口点:
#!/bin/bash
echo "Waiting for the other container"
Here use inotify to wait for a touch on a shared volume file
echo "Other container is up"
source /entrypoint.sh在另一个容器的入口点的末尾,只需触摸共享卷文件
https://stackoverflow.com/questions/51470803
复制相似问题