学习优先级:★★★★☆

易用性:★★★☆☆

在 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 只控制启动顺序,不再检查依赖服务的状态。