学习优先级:★★★★☆
易用性:★★★☆☆
在 Docker Compose 中,depends_on 指令用于控制容器的启动顺序。它确保一个容器只有在另一个容器准备好后才会启动。这在服务之间存在依赖关系时非常有用,例如 Web 应用程序依赖数据库。
以下是一个使用 depends_on 的示例,其中 Web 服务依赖于数据库。
示例代码
version: '3'
services:
web:
image: nginx:latest # 使用最新的 Nginx 镜像
depends_on:
- db # Web 服务依赖于数据库
db:
image: postgres:latest # 使用最新的 PostgreSQL 镜像
执行结果
运行此 Compose 文件时,db 容器会先启动,然后是 web 容器,因为 Web 应用程序需要数据库。
在 Docker Compose 版本 3 中,depends_on 仅控制启动顺序,而不检查依赖服务是否完全可用。这意味着 web 容器可能会在数据库完全初始化之前启动。为了确保一个容器只在另一个容器完全准备好后启动,可以使用健康检查(Healthchecks)等额外工具。
补充说明
在早期的 Docker Compose 版本中,depends_on 可以用来确保只有在另一个容器成功运行时,某个容器才会启动。但从版本 3 开始,行为发生了变化,depends_on 只控制启动顺序,不再检查依赖服务的状态。