depends_on
是 Docker Compose 文件中的一个关键字,用于指定服务之间的依赖关系。具体来说,它定义了一个服务所依赖的其他服务,只有在所依赖的服务已经启动并且处于运行状态时,该服务才会被启动。
举个例子,假设我们在 Docker Compose 文件中有以下服务:
version: '3'
services:
db:
image: mysql
ports:
- "3306:3306"
app:
build: .
ports:
- "80:80"
depends_on:
- db
在这个例子中,我们有两个服务:一个是 db
,它使用 MySQL 镜像并将容器内部的 3306 端口映射到主机的 3306 端口上;另一个是 app
,它使用 Dockerfile 中的指令构建镜像,并将容器内部的 80 端口映射到主机的 80 端口上,并且指定了 depends_on
关键字,表示 app
服务依赖于 db
服务。
这样,在启动 Docker Compose 时,Compose 会先启动 db
服务,等待它启动并处于运行状态后,才会启动 app
服务。这是因为 app
服务需要使用 db
服务提供的数据库服务,如果 db
服务没有启动,那么 app
服务将不能正常工作。
需要注意的是,depends_on
指定的是服务之间的依赖关系,而并非启动的顺序。Compose 的启动顺序是根据服务的名称来决定的,而不是依赖关系。所以,在 Docker Compose 文件中,需要务必保证服务的名称是唯一的,并且不要依赖于启动的顺序。