首页 >后端开发 >Golang >手动依赖关系获取如何优化 Go Docker 构建?

手动依赖关系获取如何优化 Go Docker 构建?

Barbara Streisand
Barbara Streisand原创
2024-12-10 04:42:12159浏览

How Can Manual Dependency Fetching Optimize Go Docker Builds?

手动获取 Docker 构建优化的依赖

在 Go 编程环境中,go 工具通常会自动处理依赖管理和安装。然而,对于优化的 Docker 镜像构建,将依赖项安装作为一个单独的阶段是有益的。

在 Go 1.11 及更早版本中,由于缺乏专用命令,这是不可能的。但是,问题 #26610 中的修复引入了 go mod download 命令。

要利用此命令来优化 Docker 构建:

  1. 复制依赖项清单:将 go.mod 和 go.sum 文件复制到 Docker 镜像的构建中
  2. 运行 go mod download: 在 Docker 构建阶段执行 go mod download 以手动获取依赖项。

这是 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"]

分离依赖安装使 Docker 能够利用层缓存,使重建更加高效,因为许多代码更改通常不会影响依赖项。

此外,请考虑利用“容器化您的 Go 开发人员环境 – 第 2 部分”一文中所述的 Go 编译器缓存来进一步加快构建时间。

以上是手动依赖关系获取如何优化 Go Docker 构建?的详细内容。更多信息请关注PHP中文网其他相关文章!

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