容器显示 running,不等于应用已经能接请求。临时排查时可以在 compose 里加一个简单的 healthcheck,让状态里直接看到服务是否通过检查。
环境:Docker Compose v2,示例用 nginx。新建 compose.yml:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1/ || exit 1"]
interval: 5s
timeout: 2s
retries: 3
启动后看状态:
docker compose up -d
docker compose ps
等一会儿,STATUS 里会出现 healthy。也可以直接看检查记录:
docker inspect --format='{{json .State.Health}}' $(docker compose ps -q web)
真实项目里把地址和依赖换成应用自己的健康接口就行。检查命令最好只判断服务是否能正常响应,别把太多外部依赖都塞进去,不然一个无关的依赖故障也会让容器看起来像挂了。