您的当前位置:首页 > 热点 > 云计算核心技术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:
&kenbsp; build: .
ports:
&nbr教sp; - "80:8000"
depends_on:
- "d程:b"
command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
&ndobsp; db:
image: postgres
第一个解决方案有局限性。例如,它不验证特定服务何时真正就绪。如果您向命令添加更多参数,请将ck该bash shift命令与循环一起使用,如下例所示。
或者,编写您自己的包装器脚本以执行更特定于应用程序的运行状况检查。例如,您可能要等到Postgres准备好接受命令:
#!/bin/sh
# wait-for-perostgres.sh
set -e
host="$1"
shift
cmd="$@"
until PGPASSWORD=$POSTGRES_PASSWORD psql -h "$host" -U "postgres" -c '\q'; do
&-cgt;&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - executing command"
execom $cmd
您可以通过设置以下内容,将其用作上一个示例中的包装脚本:
command: ["./wait-for-postgres.sh", "db", "python", "app.py"]
标签: 腾讯文档 WorkBuddy AI工作流 腾讯云2026-06-27
比亚迪与亚马逊云科技达成合作 加速拓展全球业务2026-06-28
标签: 抖音集团 2025反舞弊通报 电商 PICO2026-06-25
夸克发布健康大模型技术报告,公开AI“主任医师”技术细节2026-07-20
标签: 谷歌云 Wiz 云安全 Assaf Rappaport2026-10-23
运动巨头锐步跨界健康科技:首款智能戒指发布,售价249美元,主打压力与体温监测2026-07-30
标签: 北汽极狐 L3自动驾驶 京AA0001Z 激光雷达2026-07-03
标签: 小鹏汽车 小鹏GX 台积电 胡润中国500强2026-06-24
企业能否负担得起大数据解决方案的成本?2026-07-08
任我行软件与阿里云深化合作 推进软件产品创新升级2026-08-27
标签: 固德电材 新能源汽车电池防护 云母绝缘材料 宁德时代供应链2026-07-16
MIT脑机接口项目AlterEgo完成商业化转型,"无声交流"技术准确率达92%2026-07-22
2021年美国500强中最赚钱的50家公司:苹果第一,微软第二2026-05-25
标签: 机器人2026-09-10
标签: 京东物流 JoyExpress 异狼机械臂 京东航空2026-05-17
马斯克宣布Grok AI将助力识别伪造视频,打击虚假信息!2026-09-07
云计算开发:Python练习实例-求输入数字的平方2026-05-27
华为云IaaS市场份额全球第五 国内仅次于阿里云2026-08-03