建置 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中文網其他相關文章!