在 Compose 中控制启动和关闭顺序
重要的
Docker 的文档引用并描述了 Compose V2 功能。
自 2023 年 7 月起,Compose V1 停止接收更新,并且不再出现在新的 Docker Desktop 版本中。 Compose V2 已取代它,并且现已集成到所有当前的 Docker Desktop 版本中。有关更多信息,请参阅 迁移到 Compose V2。
您可以使用depends_on属性控制服务启动和关闭的顺序
。 Compose 始终按依赖顺序启动和停止容器,其中依赖关系由depends_on
、links
、volumes_from
和确定
network_mode: "service:..."
。
一个很好的例子就是需要访问数据库的应用程序。如果两个服务都以 启动docker compose up
,则可能会失败,因为应用程序服务可能在数据库服务之前启动,并且找不到能够处理其 SQL 语句的数据库。
控制启动
启动时,Compose 不会等到容器“准备就绪”,而只会等到容器开始运行。例如,如果您有一个关系数据库系统需要启动自己的服务才能处理传入连接,这可能会导致问题。
检测服务就绪状态的解决方案是将属性condition
与以下选项之一结合使用:
service_started
service_healthy
。这指定依赖项预计是“健康的”,这是healthcheck
在启动依赖服务之前使用 , 定义的。service_completed_successfully
。这指定在启动依赖服务之前,依赖项预计会成功完成。