使用 docker compose wait 等待特定服务
在上一步中,我们使用 docker compose wait
等待所有服务停止。本步骤将学习如何使用该命令等待特定服务达到指定状态。
首先,让我们用 docker-compose up -d
重新启动服务。确保位于 ~/project
目录:
cd ~/project
docker-compose up -d
使用 docker-compose ps
验证两个服务都在运行:
docker-compose ps
现在打开一个新的终端窗口或标签页,我们将用它来演示等待特定服务。
在新终端窗口中导航至 ~/project
目录:
cd ~/project
通过在 docker compose wait
命令后指定服务名,可以限定等待范围。例如仅等待 web
服务停止:
docker compose wait web
与上一步类似,该命令会因 web
服务正在运行而阻塞。
切换回原始终端窗口,我们将仅停止 web
服务。使用 docker stop
命令配合容器名操作(可通过 docker ps
查看容器名,通常类似 project-web-1
):
cd ~/project
docker stop project-web-1
如果容器名不同,请替换实际的 project-web-1
。
观察原始终端窗口的输出,将看到 web
容器正在停止的提示。
切换回运行 docker compose wait web
的新终端窗口。当 web
服务停止后,该命令将检测到状态变化并退出。
此时新终端窗口应恢复命令提示符。注意即使 db
服务仍在运行,docker compose wait web
也已退出。
要确认 db
服务仍在运行,请返回原始终端执行:
cd ~/project
docker-compose ps
你将看到 db
服务显示为 Up
状态,而 web
服务已不在列表中或显示为停止状态。
最后停止剩余的 db
服务:
cd ~/project
docker-compose down
你已成功使用 docker compose wait
实现了阻塞直至特定服务停止的功能。