利用预缓存的依赖关系高效构建 Docker 镜像
构建 Docker 镜像时,最大限度地减少构建时间至关重要。一种策略是缓存依赖项。然而,这需要先构建依赖项,这可能会很耗时。
有没有办法预先构建 go.mod 文件中列出的多个依赖项?
答案在于利用 Docker 的缓存机制。建议的 Dockerfile 结构包括一个关键的缓存层:
FROM scratch COPY --from=build /out/example /
此步骤将构建的可执行文件从中间构建阶段复制到最终映像中。然而,关键成分是在构建阶段:
RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example .
该命令挂载默认的go build缓存目录(/root/.cache/go-build)并执行go build命令。缓存确保依赖项仅下载和编译一次,从而显着减少后续构建的构建时间。
要启用缓存,必须将 DOCKER_BUILDKIT 环境变量设置为 1:
DOCKER_BUILDKIT=1 docker build -t myimage .
按照以下步骤,您可以在 go.mod 中预构建所有依赖项并利用缓存以简化 Docker 映像的构建。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3