Go 1.11 中引入的关键概念之一是模块支持。虽然自动依赖项安装功能通常很有用,但某些用例可能需要手动获取依赖项。
例如,在 Docker 构建环境中,依赖项更改远不如代码更改那么频繁,利用 Docker 的层缓存可以通过将依赖项安装阶段与构建阶段分离,显着加快重建速度。
Go 现在为这一挑战提供了解决方案。感谢问题 #26610,您可以利用 go mod download 命令手动获取依赖项。此命令仅需要 go.mod 和 go.sum 文件。
这是采用此技术的缓存多阶段 Docker 构建的示例:
FROM golang:1.17-alpine as builder RUN apk --no-cache add ca-certificates git WORKDIR /build # Fetch dependencies COPY go.mod go.sum ./ RUN go mod download # Build COPY . ./ RUN CGO_ENABLED=0 go build # Create final image FROM alpine WORKDIR / COPY --from=builder /build/myapp . EXPOSE 8080 CMD ["./myapp"]
此外,文章“容器化您的 Go 开发人员环境 – 第 2 部分”提供了有关利用 Go 编译器缓存进一步提高构建速度的宝贵见解。
以上是如何手动获取 Go 依赖项以加快 Docker 构建速度?的详细内容。更多信息请关注PHP中文网其他相关文章!