版本3中是否提供docker-compose服务初始化?

时间:2018-07-23 02:11:10

标签: docker docker-compose devops docker-swarm

我一直在寻找启动docker-compose服务的初始化顺序。像服务'web'应该在docker-compose中等待'db'完成。

我猜以前曾将'depends_on'用于此目的,但由于版本3起,'depends_on'不再施加docker服务启动顺序,因为docker希望在服务独立失败时随时启动服务。我想这是删除以前的等待功能的充分理由。

但是,如果是这样,那么实现初始化序列的替代方法是什么,在此之前,我不希望在“ db”完全初始化并完成启动之前不启动“ web”服务。

如果我对这个主题的理解有误,请纠正我。

1 个答案:

答案 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

,然后在另一个容器的入口点末尾,触摸共享的卷文件