Ben*_*Ben 3 docker docker-compose docker-swarm docker-stack
给定撰写文件
version: '3.8'
services:
whoami1:
image: containous/whoami
depends_on:
- whoami2
whoami2:
image: containous/whoami
Run Code Online (Sandbox Code Playgroud)
当部署到 docker swarmdocker stack deploy -c docker-compose.yaml test
服务时whoami1,whoami2似乎以随机顺序启动并忽略depends_on条件。
docker stack deploy -c docker-compose.yaml test
Creating network test_default
Creating service test_whoami1
Creating service test_whoami2
Run Code Online (Sandbox Code Playgroud)
docker swarm 是否支持通过依赖项进行服务启动排序?
小智 5
不,至少不是内置的。
\n即使使用depends_on,也whoami2可能尚未准备好进行交互whoami1,因为它可能需要时间来自行启动:
\n\n但是,对于启动,Compose 不会等到容器 \xe2\x80\x9cready\xe2\x80\x9d(无论这对您的特定应用程序意味着什么) - 只等到它\xe2\x80\x99s 运行。这是有充分理由的。
\n
https://docs.docker.com/compose/startup-order/
\n他们暗示有两种可能性来检查是否whoami2准备好。
\n\n使用 wait-for-it、dockerize 或 sh 兼容的 wait-for 等工具。这些是小包装脚本,您可以将其包含在应用程序\xe2\x80\x99s 映像中,以轮询给定的主机和端口,直到它\xe2\x80\x99s 接受 TCP 连接。
\n
对于 docker swarm 来说,depends_on 确实被忽略了:
\n\n\n使用depends_on时需要注意以下几点:
\n\n
\n- (...)
\n- 使用版本 3 Compose 文件以 swarm 模式部署堆栈时,将忽略 dependent_on 选项。
\n
https://docs.docker.com/compose/compose-file/#depends_on
\n| 归档时间: |
|
| 查看次数: |
8117 次 |
| 最近记录: |