作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 .net 2.2 核心控制台应用程序,它在 docker 容器中作为 HostedService 永久运行。它没有使用 ASPNet.Core,也不是 API,而是纯粹的 .net-core 应用程序。
启动时,它会执行许多健康检查,并在开始运行时执行。
我正在尝试编写蛋糕构建脚本并在 docker 中部署,并运行一些 mocha 集成测试。但是,集成步骤不会等待控制台应用程序完成其运行状况检查并且集成失败。
我阅读的所有健康检查指南都是针对 API 的。我没有 API,也没有端点。如何让 docker 等待控制台应用程序准备就绪?
提前致谢
最佳答案
您可以使用 docker-compose tool尤其是它的 healthcheck
option在继续集成测试之前等待容器启动并完成其设置工作。
您可以添加 healthcheck
阻止到您的应用服务定义:
myapp:
image: ...
healthcheck:
test:
["CMD", "somescript.sh", "--someswitch", "someparam"]
interval: 30s
timeout: 10s
retries: 4
您在
test
中指定的命令属性应验证应用程序的设置工作是否已完成。它可以是添加到
myapp
的一些自定义脚本。容器只是为了它的健康检查。
depends_on
block并在其中提及应用服务:
wait-for-app-setup:
image: ...
depends_on:
myapp:
condition: service_healthy
因此,docker-compose 将处理正确的顺序和适当的等待时间,以便正确启动和设置内容。
关于docker - 如何在 docker 控制台应用程序中执行健康检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55743121/
我是一名优秀的程序员,十分优秀!