为什么我们在构建 go 应用程序之前使用 go mod 下载?

Won*_*Kim 5 go

当人们用模块制作go应用程序的docker文件时,大多数人都是这样制作的。

COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN go build
Run Code Online (Sandbox Code Playgroud)

但是当我尝试下面的命令时,它也运行良好。

COPY . .
RUN go build
Run Code Online (Sandbox Code Playgroud)

那么,有什么区别呢?使用命令
有什么好处吗?go mod download

O.M*_*Man 6

Go 1.11引入了该go mod download命令,该命令获取go.modgo.sum文件并从中下载依赖项,而不是使用源代码。由于这些文件不会频繁更改(除非您正在更新依赖项),因此可以通过DockerfileCOPY中的命令简单地缓存它们。

\n


Hen*_*nry 3

这样做通常是为了更好地使用缓存。依赖项不会像程序本身那样频繁更改。在单独的步骤中进行下载允许缓存该层。重复构建将会快得多。