33 lines
782 B
Bash
Executable File
33 lines
782 B
Bash
Executable File
#!/bin/sh
|
||
set -eu
|
||
|
||
max_attempts="${WEB_HEALTH_ATTEMPTS:-30}"
|
||
attempt=1
|
||
|
||
while [ "$attempt" -le "$max_attempts" ]; do
|
||
container_id="$(docker compose ps --quiet web)"
|
||
if [ -z "$container_id" ]; then
|
||
echo "Web 容器未运行" >&2
|
||
exit 1
|
||
fi
|
||
|
||
status="$(docker inspect --format '{{if .State.Health}}{{.State.Health.Status}}{{else}}missing{{end}}' "$container_id")"
|
||
case "$status" in
|
||
healthy)
|
||
echo "Web 容器健康检查通过"
|
||
exit 0
|
||
;;
|
||
unhealthy|missing)
|
||
echo "Web 容器健康状态异常:$status" >&2
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
echo "等待 Web 容器健康检查($attempt/$max_attempts,当前:$status)"
|
||
attempt=$((attempt + 1))
|
||
sleep 2
|
||
done
|
||
|
||
echo "Web 容器未在预期时间内进入 healthy 状态" >&2
|
||
exit 1
|