尝试在 docker 上使用 go mod download 时出错

Error when trying to use go mod download on docker

提问人:Arsham Arya 提问时间:6/3/2021 更新时间:10/21/2023 访问量:5846

问:

我正在使用 docker 和 Postgres 和 gorm(去 ORM 库)制作一个应用程序 我想构建我的 docker 映像时遇到此错误(某种 EOF?EOF error when go mod download on docker

我的代码非常简单,无需 docker 即可正常运行。

package main

import (
    "fmt"
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

func main() {
    dsn := "host=localhost user=postgres password=postgres dbname=postgres port=5432 sslmode=disable TimeZone=Asia/Shanghai"
    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    if err != nil {
        fmt.Println("Error connecting to postgres", err)
    }

    fmt.Printf("%+v\n", db)
}

另外,这是我的 Dockerfile:

FROM golang:1.16.4-alpine3.13 AS build
RUN mkdir /app
COPY src/go.mod /app
COPY src/go.sum /app
WORKDIR /app

RUN go mod download

COPY src /app
RUN go build -o main .

FROM alpine AS final
COPY --from=build /app /app
ENTRYPOINT ["/app/main"]
docker eof go-gorm go-modules

评论

2赞 BMitch 6/4/2021
请发布格式化的代码,而不是文本图片。图片的可访问性较差,无法通过搜索找到,并且回答您的问题的人无法复制。
0赞 Arsham Arya 6/5/2021
@BMitch好的,谢谢,我会在再次面对它后编辑我的帖子。
0赞 BMitch 6/5/2021
你是在暗示你不能轻易复制这个吗?该错误表示网络问题,因此,如果它是间歇性的,则表示您有间歇性网络中断,并且调试您的网络可能超出了此站点的范围。
0赞 Arsham Arya 6/5/2021
@BMitch,不不不,那是来自我现在不从事的另一个项目,我没有任何网络问题,我经常遇到这个错误,但是当我运行docker run ...下载依赖项需要花费大量时间,然后发生此错误。

答:

2赞 bcmills 6/26/2021 #1

这看起来像是一个网络问题。

当您在 Docker 外部运行时,您可能不会看到这些错误,因为受影响的模块已在以前构建的本地模块缓存中,而您的 Dockerfile 从干净缓存开始,每次都重新下载模块源。

评论

1赞 Arsham Arya 6/27/2021
是的,这似乎是网络错误,但我没有任何网络错误,我尝试了很多次并检查了我的网络,实际上,还有其他事情我想让你知道,我在伊朗,我必须打开 VPN 才能使用 golang,而且,在这种情况下,当连接时间过长(超过 800 秒)时会发生此错误, 在其他情况下,时间无关紧要。
1赞 Arsham Arya 10/21/2023 #2

就我而言,这是因为网络问题,使用 VPN 或代理可能会有所帮助,我将这个变量 () 设置为我的命令并且它起作用了:GOPROXY

GOPROXY="https://goproxy.io" go mod download # or `go mod tidy`