【问题标题】:Using wait-for-it.sh to wait on an endpoint with a slash使用 wait-for-it.sh 在带有斜杠的端点上等待
【发布时间】:2020-08-25 23:16:06
【问题描述】:

背景: 我有一个运行 docker 映像的项目(在生产中它将在 knative 中运行,但对于测试,docker/docker compose 是一个很好的第一步),作为我的 CI/CD 管道的一部分,我想运行验收测试反对形象。我将图像配置为在 docker 中运行,并且(黄瓜)验收测试作为 gradle 任务的一部分运行。我希望 gradle 测试等到图像旋转起来(由于 graalvm 提前编译,图像本身需要不到 0.02 秒的时间才能启动,但 gitlab 运行器可能很慢)。我已经连接了一个 wait-for-it.sh 脚本(https://gitlab.com/connorbutch/reading-comprehension/-/blob/5-implement-glue-code/wait-for-it.sh),它可以等待 localhost:8080(您可以通过执行以下命令来验证自己:docker run -i --rm -p 8080:8080 connorbutch/reading-comprehension-server-quarkus-impl & ./wait-for-it.sh localhost:8080 --timeout=10 --strict -- ./gradlew acceptanceTest),但我想拥有任务等待 localhost:8080/health/readiness,以下命令不起作用docker run -i --rm -p 8080:8080 connorbutch/reading-comprehension-server-quarkus-impl & ./wait-for-it.sh localhost:8080/health/readiness --timeout=10 --strict -- ./gradlew acceptanceTest 需要注意的是应用程序最慢的启动时间为 0.02 秒,因此端点已启动并正常工作,这是我如何运行等待它的脚本的问题

关于如何输入值以等待它以便我让 wait-for-it.sh 测试包含斜杠的 url 的任何想法?或者,关于如何执行此排序的任何其他输入也很棒!

如果您想在本地运行,请从 (https://gitlab.com/connorbutch/reading-comprehension/-/tree/5-implement-glue-code) 克隆代码(唯一要求是要有 docker),执行 ./run-it.sh,然后使用上述命令时间> 谢谢, 康纳

【问题讨论】:

    标签: linux docker shell docker-compose


    【解决方案1】:

    wait-for-it.sh 是一个纯 bash 脚本,它将等待主机和 TCP 端口的可用性。

    您不能使用它来检查是否部署到服务器或 URL 的服务是否返回响应,因此您必须使用 curl 命令实现自己的入口点脚本并休眠以等待该 URL 返回 200 ok或您期望的响应

    你可以从这里开始

    S=0
    
    while [ $S -ne 200 ]
    do
    
    S=$(curl -s -o /dev/null -w "%{http_code}"  http://www.google.com )
    
    sleep 1 
    
    done ;
    
    echo "DONE !!"
    
    #write the script to start the service 
    

    【讨论】:

    • 感谢亚瑟的澄清。我想我会编写自己的脚本来自己测试端点!
    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2014-09-21
    • 2020-10-18
    • 2015-09-20
    相关资源
    最近更新 更多