首頁  >  文章  >  後端開發  >  ## 如何在 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 來啟用 Docker BuildKit 。或者,您可以使用 docker buildx 實用程式。

DOCKER_BUILDKIT=1 docker build -t myimage .
docker buildx build -t myimage .

驗證此最佳化的有效性包括在後續建置中執行 go build 之前檢查 go-build 快取目錄是否已填入。測試已經證實了這種預建構方法的預期功能。

以上是## 如何在 Dockerfile 中預先建置依賴項以加快映像建置速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn