
sudobmitch/docker-stack-wait用于等待Docker Swarm栈部署完成的工具。
bash$ ./docker-stack-wait.sh -h docker-stack-wait.sh [选项] stack_name -f filter: 仅等待匹配过滤条件的服务,可多次传递,过滤语法参考docker stack services -h: 显示此帮助信息 -n name: 仅等待指定名称的服务,覆盖任何过滤条件,可多次传递,不包含栈名称前缀 -r: 将回滚视为成功 -s sec: 轮询服务状态的频率(默认5秒) -t sec: 停止等待的超时时间
bash$ docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ sudobmitch/docker-stack-wait $stack_name
或创建别名:
bash$ alias docker-stack-wait='docker run --rm -it \ -v /var/run/docker.sock:/var/run/docker.sock \ sudobmitch/docker-stack-wait'
该容器可在Docker Hub获取,并通过Docker Hub自动构建构建。
-n和-f选项允许选择栈中的部分服务。以下是示例compose文件:
yamlversion: '3.7' services: normal: image: busybox command: /bin/sh -c ":>/healthy; tail -f /dev/null" deploy: labels: deploy.wait: "true" deploy.quick: "true" healthcheck: test: /bin/sh -c "[ -f /healthy ] && exit 0 || exit 1" interval: 15s start_period: 60s retries: 3 slow: image: busybox command: /bin/sh -c "sleep 50; :>/healthy; tail -f /dev/null" deploy: labels: deploy.wait: "true" healthcheck: test: /bin/sh -c "[ -f /healthy ] && exit 0 || exit 1" interval: 15s start_period: 60s retries: 3 tooslow: image: busybox command: /bin/sh -c "sleep 300; :>/healthy; tail -f /dev/null" deploy: labels: deploy.wait: "false" healthcheck: test: /bin/sh -c "[ -f /healthy ] && exit 0 || exit 1" interval: 15s start_period: 60s retries: 3
仅等待标签deploy.wait=true的服务:
bashdocker-stack-wait.sh -f label=deploy.wait=true waittest
仅等待名称为normal和slow的服务:
bashdocker-stack-wait.sh -n normal -n slow waittest
若使用多个compose文件部署栈,可通过以下方式等待单个compose文件中的服务:
bashwait_args="" for arg in $(docker-compose -f docker-compose.yml config --services 2>/dev/null); do wait_args="${wait_args:+${wait_args} }-n $arg" done docker-stack-wait.sh $wait_args waittest





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务