您的当前位置:首页 > 热点 > 云计算核心技术Docker教程:docker-compose控制服务启动和关闭顺序 正文
时间:2026-11-14 来源:网络整理 编辑:热点
谷歌留痕软件【tg:seogoogle987】
docker-compose可以使用depends_on选项控制服务启动和关闭的顺序。撰写总是开始和依赖顺序,其中依赖性是通过确定停止容器 depends_on,links,volumes_from,和云计network_mode: "service:..."。
但是,对于启动而言,Compose不会等到容器“就绪”(对于您的特定应用程序意味着什么)之后,才等到它运行时。这是有充分的理由的。
等待数据库(例如)准备算核就绪的问题实际上只是分布式系统更大问题的一部分。在生产中,您的数据库可能随时不可用或移动主机。您的应用程序需要能够应对这些类型的故障。
要解决此问题,请设计您的应用程序以尝试在失败后重新建立与数据库的连接心技。如果应用程序重试连接,则它最终可以连接到数据库。
最好的解决方案是在启动时以及由于某种原因而断开连接时都在应用程序代码中执行此检查。但是,如果不需要此级别的弹性,则可以使用包装器脚本解决此问题:
使用诸如w术Dait-for-it, dockerize,sh-compatible wait-for或RelayAndContainers模板之类的工具。这些是小的包装脚本,您可以在应用程序的映像中包括这些脚本,以轮oc询给定的主机和端口,直到它接受TCP连接为止。
例如,使用wait-for-it.sh或wait-for包装服务的命令:
version: "2"
services:
web:
&nkebsp; build: .
ports:
&nbr教sp; - "80:8000"
depends_on:
&nbs程:p; - "db"
command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
do db:
image: postgres
第一个解决方案有局限性。例如,它不验证特定服务何时真正就绪。如果您向命令添加更多参数,请ck将该bash shift命令与循环一起使用,如下例所示。
或者,编写您自己的包装器脚本以执行更特定于应用程序的运行状况检查。例如,您可能要等到Postgres准备好接受命令:
#!/bin/sh
# wait-for-erpostgres.sh
set -e
host="$1"
shift
cmd="$@"
until PGPASSWORD=$POSTGRES_PASSWORD psql -h "$host" -U "postgres" -c '\-cq'; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - executing commomand"
exec $cmd
您可以通过设置以下内容,将其用作上一个示例中的包装脚本:
command: ["./wait-for-postgres.sh", "db", "python", "app.py"]
2022年六个要避免的顶级云成本优化问题以及应对方式 译文2026-10-25
标签: 普诺威 IC封装基板 MEMS 歌尔微2026-08-30
谷歌AI实验室DeepMind向加拿大扩张 成立小型研究团队2026-09-21
九大数据分析方法之:标签分析法2026-11-03
贝索斯将于7月5日卸任亚马逊CEO上热搜 网友:反正钱已经多的花不完了2026-09-25
标签: Spotify 安娜的档案 音乐保存 DRM绕过2026-06-22
寒武纪宣布全面适配DeepSeek-V3.2-Exp 模型,推理引擎开源来袭!2026-09-28
抖音上线 “AI求真” 功能,助你辨别谣言,寻找真相!2026-06-19
云计算公司Fastly:已修复造成多个网站宕机的故障2026-10-30
标签: 腾讯 马维斯Marvis AI助手 WindowsAI2026-05-28
蔚来救场腾讯云,“天使客户”蔚来能否给腾讯带来新生?2026-09-19
云计算开发实例:Python3字符串翻转2026-06-02
标签: Token 张雪峰 美团 苹果 iOS26.4 小米集团 一加15T2026-07-12
豆包视频生成模型Seedance 1.0 pro上线首尾帧能力2026-11-01
标签: 粤十数智 冷链农产品 数智化平台 港股IPO2026-07-07
标签: B站 完美世界 西山居 雷霆2026-06-26
英特尔复苏计划导致利润承压 数据中心业务疲软引发担忧2026-06-02
如何引领数字创新的新“太空竞赛”2026-07-20
标签: 亚马逊 Anthropic AWS 云计算2026-07-09