登录
首页 >  Golang >  Go问答

Go 容器构建(arm):处理 CGO 超时和 net/http:TLS 握手超时

来源:stackoverflow

时间:2024-02-21 19:24:25 137浏览 收藏

你在学习Golang相关的知识吗?本文《Go 容器构建(arm):处理 CGO 超时和 net/http:TLS 握手超时》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我有一个使用 go modcgo 的项目,它具有相对较大的依赖关系树。

本地构建(goos=linuxgoarch=amd64)工作正常。 使用我的自定义构建容器(多种架构,包括 arm)在 ci 中构建(在我自己的运行器上)大部分工作正常,尽管有时在 go getting deps 时会“挂起”。

使用相同的构建映像在本地构建 arm(由于 cgo 和相应的依赖于架构的 c 工具链,我需要使用容器)现在会出现以下错误(其中一个示例):

go: downloading github.com/go-co-op/gocron v1.9.0
scheduler/scheduler.go:7:2: github.com/go-co-op/[email protected]: Get "https://goproxy.io/github.com/go-co-op/gocron/@v/v1.9.0.zip": net/http: TLS handshake timeout

但是,我可以看到(使用 btop),在此错误之前 qemu-arm 非常繁忙(800 cpu%)运行 go 相关的构建任务(实际上是 go mod tidy 进程)。

我的猜测是,这是由于没有找到适合 arm 的特定模块的二进制文件,因此它只会即时构建它们。

因此,我怀疑 go get 从源代码构建各个模块的时间被视为正常的“从 http 获取”,这导致了观察到的超时。

因此,这意味着如果我能够增加 go get 的超时值,我就可以解决问题,但我还没有找到任何相关信息。

有什么想法吗?


正确答案


您的 isp 可能对访问 https://goproxy.io 地址有限制。您必须使用代理

在终端中设置代理,例如:

export https_proxy=127.0.0.1:1080

好了,本文到此结束,带大家了解了《Go 容器构建(arm):处理 CGO 超时和 net/http:TLS 握手超时》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>