首页  >  文章  >  后端开发  >  ## 如何在 Dockerfile 中预构建依赖项以加快映像构建速度?

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

Susan Sarandon
Susan Sarandon原创
2024-10-31 12:30:31239浏览

## 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中文网其他相关文章!

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