轻量 sidecar 探针镜像:容器常驻,由 Docker / Compose healthcheck 调用 /app/check_service_ready.sh,用于等待依赖服务就绪。
docker.io/zxavier/readiness-probe:latest
ghcr.io/<owner>/readiness-probe:latest
推送 main 会打 latest 与 sha-<short>;推送 v* 标签会打 semver(如 1.2.3、1.2)。
| 变量 | 何时需要 | 说明 |
|---|---|---|
CHECK_TYPE | 始终 | TCP 或 HTTP |
TARGET_HOST | TCP 必填;HTTP 可选 | 主机名或 IP |
TARGET_PORT | TCP 必填;HTTP 可选 | 端口 |
TARGET_URL | HTTP 必填 | 基址,如 http://gitea:3000 |
HTTP_PATH | 可选 | 追加到 TARGET_URL,默认 / |
TCP_TIMEOUT | 可选 | nc 超时秒数,默认 3 |
HTTP_TIMEOUT | 可选 | curl --max-time,默认 5 |
CONNECT_TIMEOUT | 可选 | curl --connect-timeout,默认 3 |
HTTP 模式下若同时提供 TARGET_HOST 与 TARGET_PORT,会先做 TCP 探测再请求 HTTP。
脚本内不做长重试;请用 Docker healthcheck 的 retries / interval 控制重试。
services:
db:
image: postgres:16
# ...
db-ready:
image: zxavier/readiness-probe:latest
environment:
CHECK_TYPE: TCP
TARGET_HOST: db
TARGET_PORT: "5432"
depends_on:
- db
healthcheck:
test: ["CMD", "/app/check_service_ready.sh"]
interval: 5s
timeout: 5s
retries: 12
start_period: 5s
services:
app:
image: my-app:latest
# ...
app-ready:
image: zxavier/readiness-probe:latest
environment:
CHECK_TYPE: HTTP
TARGET_URL: http://app:8080
HTTP_PATH: /healthz
depends_on:
- app
healthcheck:
test: ["CMD", "/app/check_service_ready.sh"]
interval: 5s
timeout: 8s
retries: 12
start_period: 10s
建议让 healthcheck.timeout 略大于脚本内 TCP_TIMEOUT / HTTP_TIMEOUT,避免探针被 Docker 提前杀掉。
docker build -t readiness-probe:local .
MIT
Content type
Image
Digest
sha256:34bc085b9…
Size
6.3 MB
Last updated
29 days ago
docker pull zxavier/readiness-probe