您的当前位置:首页 > 热点 > 云计算核心技术Docker教程:docker-compose控制服务启动和关闭顺序 正文
时间:2026-11-12 来源:网络整理 编辑:热点
《贝利弗山的秘密》高清在线
docker-compose可以使用depends_on选项控制服务启动和关闭的顺序。撰写总是开始和依赖顺序,其中依赖性是通过确定停止容器 depends_on,links,volumes_from,和云计network_mode: "service:..."。
但是,对于启动而言,Compose不会等到容器“就绪”(对于您的特定应用程序意味着什么)之后,才等到它运行时。这是有充分的理由的。
等待数据库(例如算核)准备就绪的问题实际上只是分布式系统更大问题的一部分。在生产中,您的数据库可能随时不可用或移动主机。您的应用程序需要能够应对这些类型的故障。
要解决此问题,请设计您的应用程序以尝试在失败后重新建立与数据库心技的连接。如果应用程序重试连接,则它最终可以连接到数据库。
最好的解决方案是在启动时以及由于某种原因而断开连接时都在应用程序代码中执行此检查。但是,如果不需要此级别的弹性,则可以使用包装器脚本解决此问题:
使术D用诸如wait-for-it, dockerize,sh-compatible wait-for或RelayAndContainers模板之类的工具。这些是小的包装脚本,您可以在应用程序的映像中包括这些脚本,以轮oc询给定的主机和端口,直到它接受TCP连接为止。
例如,使用wait-for-it.sh或wait-for包装服务的命令:
version: "2"
services:
web:
&nbkesp; build: .
ports:
 r教; - "80:8000"
depends_on:
- "程:db"
command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
do db:
image: postgres
第一个解决方案有局限性。例如,它不验证特定服务何时真正就绪。如果您向命令添加更多参ck数,请将该bash shift命令与循环一起使用,如下例所示。
或者,编写您自己的包装器脚本以执行更特定于应用程序的运行状况检查。例如,您可能要等到Postgres准备好接受命令:
#!/bin/sh
# waerit-for-postgres.sh
set -e
host="$1"
shift
cmd="$@"
until PGPASSWORD=$POSTGRES_PASSWORD psql -h "$host" -U "postgres"-c -c '\q'; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - executingom command"
exec $cmd
您可以通过设置以下内容,将其用作上一个示例中的包装脚本:
command: ["./wait-for-postgres.sh", "db", "python", "app.py"po]
最新报告披露苹果iPhone 13今年上市时间2026-09-16
标签: 拼多多 新拼姆 Temu 中国供应链2026-07-26
标签: 夸克网盘 海外影视 美剧 韩剧 泰剧2026-07-20
标签: 腾讯 Epic Games 拳头游戏 Supercell2026-10-18
中国汽车,在云端加速智能创新2026-09-28
歌曲问情2026-08-18
标签: 大晓机器人 ACE研发范式 开悟世界模型3.0 具身超级大脑A12026-08-15
甲骨文深度集成 GPT-5,助力企业智能化转型2026-09-16
美国劳工委员会官员建议重新进行亚马逊工会化投票2026-09-14
标签: 百事公司 水井坊 洪宗华2026-10-04
超预期业绩!阿里云26%增速领跑,AI收入连续8季度三位数增长2026-08-26
性能最高提升 6.9 倍,字节跳动开源大模型训练框架 veGiantModel2026-08-18
IDC预计未来几年中国公有云市场增速将回升至30%-40%2026-06-08
Perplexity AI 推出版权分成计划,将向新闻发行商付费2026-07-04
标签: Kimi 月之暗面 张予彤 AI模型2026-11-01
FTC敦促法官拒绝Facebook驳回垄断诉讼的请求2026-06-12
标签: 迪士尼 威廉姆斯 苹果 董事会2026-07-08
蛐螋虫咬人吗有毒吗2026-07-18
十个 Python 小技巧,覆盖了90%的数据分析需求!2026-07-27