我一直在寻找启动docker-compose服务的初始化顺序。像服务'web'应该在docker-compose中等待'db'完成。
我猜以前曾将'depends_on'用于此目的,但由于版本3起,'depends_on'不再施加docker服务启动顺序,因为docker希望在服务独立失败时随时启动服务。我想这是删除以前的等待功能的充分理由。
但是,如果是这样,那么实现初始化序列的替代方法是什么,在此之前,我不希望在“ db”完全初始化并完成启动之前不启动“ web”服务。
如果我对这个主题的理解有误,请纠正我。
答案 0 :(得分:0)
泊坞窗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
,然后在另一个容器的入口点末尾,触摸共享的卷文件