在 Go 编程环境中,go 工具通常会自动处理依赖管理和安装。然而,对于优化的 Docker 镜像构建,将依赖项安装作为一个单独的阶段是有益的。
在 Go 1.11 及更早版本中,由于缺乏专用命令,这是不可能的。但是,问题 #26610 中的修复引入了 go mod download 命令。
要利用此命令来优化 Docker 构建:
这是 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中文网其他相关文章!