Sign inSign up

zxavier/readiness-probe

By zxavier

Updated 29 days ago

Image
0

1.6K

zxavier/readiness-probe repository overview

readiness-probe

轻量 sidecar 探针镜像:容器常驻,由 Docker / Compose healthcheck 调用 /app/check_service_ready.sh,用于等待依赖服务就绪。

镜像

docker.io/zxavier/readiness-probe:latest
ghcr.io/<owner>/readiness-probe:latest

推送 main 会打 latestsha-<short>;推送 v* 标签会打 semver(如 1.2.31.2)。

环境变量

变量何时需要说明
CHECK_TYPE始终TCPHTTP
TARGET_HOSTTCP 必填;HTTP 可选主机名或 IP
TARGET_PORTTCP 必填;HTTP 可选端口
TARGET_URLHTTP 必填基址,如 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_HOSTTARGET_PORT,会先做 TCP 探测再请求 HTTP。

脚本内不做长重试;请用 Docker healthcheckretries / interval 控制重试。

Compose 示例

TCP
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
HTTP
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 .

License

MIT

Tag summary

Content type

Image

Digest

sha256:34bc085b9

Size

6.3 MB

Last updated

29 days ago

docker pull zxavier/readiness-probe