构建 Docker 映像时,缓存依赖项可以显着缩短构建时间。然而,这些依赖项的初始构建过程可能非常耗时。为了简化这个过程,开发人员经常寻找方法来预构建 go.mod 文件中定义的所有依赖项。
Docker 提供了一种有效的方法来实现这种预构建优化。通过按照下面的建议构建 Dockerfile,您可以受益于显着加速后续构建的缓存机制:
FROM --platform=${BUILDPLATFORM} docker.io/golang:1.16.7-alpine AS build ARG TARGETOS ARG TARGETARCH WORKDIR /src ENV CGO_ENABLED=0 COPY go.* . RUN go mod download COPY . . RUN --mount=type=cache,target=/root/.cache/go-build \ GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/example . FROM scratch COPY --from=build /out/example /
此 Dockerfile 利用 go 构建缓存的默认位置 /root/ 上的缓存挂载。缓存/构建。在初始构建期间,将填充此缓存。后续构建将重用缓存的文件,从而无需进行冗长的依赖项重建。
要激活此优化,您必须通过在构建命令中设置 DOCKER_BUILDKIT=1 来启用 Docker BuildKit 。或者,您可以使用 docker buildx 实用程序。
DOCKER_BUILDKIT=1 docker build -t myimage .
docker buildx build -t myimage .
验证此优化的有效性包括在后续构建中执行 go build 之前检查 go-build 缓存目录是否已填充。测试已经证实了这种预构建方法的预期功能。
以上是## 如何在 Dockerfile 中预构建依赖项以加快映像构建速度?的详细内容。更多信息请关注PHP中文网其他相关文章!