本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

轻量级服务就绪等待工具
 docker run --rm --network my-network atkrad/wait4x:latest tcp mysql:3306
# 等待健康检查端点返回 200 状态码 docker run --rm atkrad/wait4x:latest http [***] --expect-status-code 200 # 等待响应体包含特定内容 docker run --rm atkrad/wait4x:latest http [***] --expect-body-regex '"status":"UP"'
version: '3.8' services: app: build: . depends_on: - db - redis command: ["dockerize", "-wait", "tcp://db:3306", "-wait", "tcp://redis:6379", "-timeout", "60s", "npm", "start"] wait4x: image: atkrad/wait4x:latest command: tcp db:3306 redis:6379 db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: appdb redis: image: redis:alpine
version: '3.8' services: api: build: ./api depends_on: db: condition: service_healthy ports: - "8080:8080" db: image: postgres:14 environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: appdb healthcheck: test: ["CMD", "docker run --rm --network=container:$$HOSTNAME atkrad/wait4x:latest postgresql 'postgres://user:password@localhost:5432/appdb?sslmode=disable'"] interval: 5s timeout: 5s retries: 5
等待端口可用:
docker run --rm --network host atkrad/wait4x:latest tcp localhost:3306
等待 Web 服务器返回特定响应:
docker run --rm atkrad/wait4x:latest http [***] \ --expect-status-code 200 \ --expect-body-regex '"status":"UP"'
同时等待多个服务就绪:
docker run --rm --network host atkrad/wait4x:latest tcp 127.0.0.1:5432 127.0.0.1:6379 127.0.0.1:27017
等待 PostgreSQL 就绪:
docker run --rm --network host atkrad/wait4x:latest postgresql \ 'postgres://user:pass@localhost:5432/mydb?sslmode=disable'
服务就绪后运行命令:
docker run --rm --network host atkrad/wait4x:latest tcp localhost:8080 -- echo "服务已就绪!"
等待 HTTP 端点返回特定状态码:
docker run --rm atkrad/wait4x:latest http [***] --expect-status-code 200
等待 HTTP 端点返回匹配正则表达式模式的响应:
docker run --rm atkrad/wait4x:latest http [***] \ --expect-body-regex '"status":\s*"healthy"'
等待特定 JSON 字段存在或具有特定值:
docker run --rm atkrad/wait4x:latest http [***] \ --expect-body-json "services.database.status"
这使用 GJSON Path 语法 进行强大的 JSON 查询。
发送带有特定头的 HTTP 请求:
docker run --rm atkrad/wait4x:latest http [***] \ --request-header "Authorization: Bearer token123" \ --request-header "Content-Type: application/json"
# 基本存在性检查 docker run --rm atkrad/wait4x:latest dns A example.com # 带预期 IP 的检查 docker run --rm atkrad/wait4x:latest dns A example.com --expected-ip 93.184.216.34 # 使用特定名称服务器 docker run --rm atkrad/wait4x:latest dns A example.com --expected-ip 93.184.216.34 -n 8.8.8.8
# TCP 连接 docker run --rm --network host atkrad/wait4x:latest mysql 'user:password@tcp(localhost:3306)/mydb' # 通过 Docker 网络连接 docker run --rm --network my-network atkrad/wait4x:latest mysql 'user:password@tcp(mysql:3306)/mydb'
docker run --rm --network my-network atkrad/wait4x:latest postgresql \ 'postgres://user:password@postgres:5432/mydb?sslmode=disable'
# 基本连接检查 docker run --rm --network my-network atkrad/wait4x:latest redis redis://redis:6379 # 带认证和数据库选择 docker run --rm --network my-network atkrad/wait4x:latest redis redis://user:password@redis:6379/0 # 检查键是否存在 docker run --rm --network my-network atkrad/wait4x:latest redis redis://redis:6379 --expect-key "session:active"
docker run --rm --network my-network atkrad/wait4x:latest rabbitmq \ 'amqp://guest:guest@rabbitmq:5672/myvhost'
限制 Wait4X 的总等待时间:
docker run --rm atkrad/wait4x:latest tcp localhost:8080 --timeout 30s
控制 Wait4X 重试频率:
docker run --rm atkrad/wait4x:latest tcp localhost:8080 --interval 2s
使用指数退避进行更高效的重试:
docker run --rm atkrad/wait4x:latest http [***] \ --backoff-policy exponential \ --backoff-exponential-coefficient 2.0 \ --backoff-exponential-max-interval 30s
等待端口变为空闲:
docker run --rm atkrad/wait4x:latest tcp localhost:8080 --invert-check
等待服务停止:
docker run --rm atkrad/wait4x:latest http [***] \ --expect-status-code 200 --invert-check
检查成功后执行命令:
docker run --rm --network my-network --volume $(pwd):/app atkrad/wait4x:latest \ tcp db:3306 -- /app/deploy.sh
同时等待多个服务:
docker run --rm --network my-network atkrad/wait4x:latest tcp db:3306 redis:6379 rabbitmq:5672
| 参数 | 描述 | 默认值 |
|---|---|---|
--timeout | 最大等待时间 (例如 30s, 5m) | 30s |
--interval | 检查间隔时间 (例如 1s, 500ms) | 1s |
--backoff-policy | 退避策略 (constant, exponential) | constant |
--backoff-exponential-coefficient | 指数退避系数 | 2.0 |
--backoff-exponential-max-interval | 指数退避最大间隔 | 30s |
--quiet | 安静模式,只输出错误信息 | false |
--verbose | 详细输出 | false |
--version | 显示版本信息 | - |
--help | 显示帮助信息 | - |
| 参数 | 描述 |
|---|---|
--expect-status-code | 期望的 HTTP 状态码 |
--expect-body-regex | 响应体应匹配的正则表达式 |
--expect-body-json | 应存在的 JSON 路径 |
--expect-body-xpath | 应匹配的 XPath 查询 |
--request-header | 发送的 HTTP 请求头 |
--expect-header | 应存在的响应头 |
--insecure | 不验证 SSL 证书 |
| 参数 | 描述 |
|---|---|
-n, --nameserver | 使用的名称服务器 |
--expected-ip | 期望的 IP 地址 |
--expected-domain | 期望的域名 |
--expected-value | 期望的记录值 |
version: '3.8' services: web: build: ./web depends_on: wait-for-dependencies: condition: service_completed_successfully command: ["npm", "start"] wait-for-dependencies: image: atkrad/wait4x:latest command: - tcp - db:3306 - redis:6379 - --timeout - 60s networks: - app-network db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: appdb networks: - app-network redis: image: redis:alpine networks: - app-network networks: app-network:
在 GitLab CI 中:
deploy: stage: deploy image: docker:latest services: - docker:dind before_script: - docker pull atkrad/wait4x:latest - docker network create app-network - docker run -d --name db --network app-network -e POSTGRES_PASSWORD=pass postgres:14 - docker run --rm --network app-network atkrad/wait4x:latest postgresql 'postgres://postgres:pass@db:5432/postgres?sslmode=disable' --timeout 60s script: - docker run --name app --network app-network -d my-app-image
#!/bin/bash set -e # 启动数据库容器 docker run -d --name db -e POSTGRES_PASSWORD=pass postgres:14 # 等待数据库就绪 docker run --rm --network host atkrad/wait4x:latest postgresql \ 'postgres://postgres:pass@localhost:5432/postgres?sslmode=disable' \ --timeout 120s # 运行数据库迁移 docker run --rm --network host my-migration-tool migrate # 启动应用 docker run -d --name app --network host my-app
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429