首页 > 后端开发 > Golang > 正文

## 如何在 Dockerfile 中预构建依赖项以加快映像构建速度?

Susan Sarandon
发布: 2024-10-31 12:30:31
原创
260 人浏览过

## How Can I Pre-Build Dependencies in My Dockerfile for Faster Image Builds?

预构建依赖项以加快 Docker 映像构建速度

构建 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 来启用 D​​ocker BuildKit 。或者,您可以使用 docker buildx 实用程序。

DOCKER_BUILDKIT=1 docker build -t myimage .
登录后复制
docker buildx build -t myimage .
登录后复制

验证此优化的有效性包括在后续构建中执行 go build 之前检查 go-build 缓存目录是否已填充。测试已经证实了这种预构建方法的预期功能。

以上是## 如何在 Dockerfile 中预构建依赖项以加快映像构建速度?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!