首页 >后端开发 >Golang >如何手动获取 Go 依赖项以加快 Docker 构建速度?

如何手动获取 Go 依赖项以加快 Docker 构建速度?

Patricia Arquette
Patricia Arquette原创
2024-12-15 16:29:10190浏览

How Can I Manually Fetch Go Dependencies for Faster Docker Builds?

Go 中的手动依赖关系获取

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn