docker stack deploy depends_on



给定的撰写文件

version: '3.8'
services:
whoami1:
image: containous/whoami
depends_on:
- whoami2
whoami2:
image: containous/whoami

部署到 Docker 群docker stack deploy -c docker-compose.yaml test时 服务whoami1whoami2似乎以随机顺序启动并忽略depends_on条件。

docker stack deploy -c docker-compose.yaml test
Creating network test_default
Creating service test_whoami1
Creating service test_whoami2

docker swarm 是否通过依赖项支持服务启动排序?

不,至少不是内置的。

即使有depends_on,whoami2也可能还没有准备好与whoami1交互,因为它可能需要时间来启动自己:

但是,对于启动,Compose 不会等到容器"准备就绪"(无论这对您的特定应用程序意味着什么(——只会等到它运行。这是有充分理由的。

https://docs.docker.com/compose/startup-order/

他们暗示有两种可能性来检查whoami2是否准备好了。

使用诸如 wait-for-it、dockerize 或 sh 兼容的 wait-for 等工具。这些是小型包装脚本,您可以将其包含在应用程序的映像中,以轮询给定的主机和端口,直到它接受 TCP 连接。

depends_on确实被docker swarm忽略了:

使用depends_on时需要注意以下几点:

  • (...
  • 使用版本 3 撰写文件在 swarm 模式下部署堆栈时,将忽略 depends_on 选项。

https://docs.docker.com/compose/compose-file/#depends_on

相关内容

最新更新