gpt4 book ai didi

docker - 如何知道我的程序是否在compose中完全在docker内部启动

转载 作者:行者123 更新时间:2023-12-02 18:46:50 26 4
gpt4 key购买 nike

在我的CI链中,我在“docker-compose up”之后执行了端到端测试。不幸的是,我的测试经常失败,因为即使正确启动了容器,容器中包含的程序却没有启动。

在运行测试之前,是否有一种优雅的方法来验证我的设置已完全启动?

最佳答案

您可以在运行测试之前轮询所需的服务,以确认它们是否在响应。
curl具有内置的retry logic,或者围绕某种其他类型的服务测试构建重试逻辑相当简单。

#!/bin/bash

await(){
local url=${1}
local seconds=${2:-30}
curl --max-time 5 --retry 60 --retry-delay 1 \
--retry-max-time ${seconds} "${url}" \
|| exit 1
}

docker-compose up -d
await http://container_ms1:3000
await http://container_ms2:3000
run-ze-tests

轮询的替代方法是基于事件的系统。
如果您所有的服务都将通知推送到外部服务 scaeda gave the example of a log file,或者您可以使用Amazon SNS之类的东西。您的服务会发出“已启动”事件。然后,您可以订阅这些事件,并在一切开始后运行所需的任何内容。

Docker 1.12确实添加了 HEALTHCHECK build命令。也许可以通过 Docker Events获得?

关于docker - 如何知道我的程序是否在compose中完全在docker内部启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39118038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com