首頁 > 後端開發 > Golang > 主體

如何透過預先建置依賴項和使用建置快取來優化 Docker 映像建置?

Susan Sarandon
發布: 2024-10-26 07:36:30
原創
597 人瀏覽過

How Can I Optimize Docker Image Builds by Pre-Building Dependencies and Using Build Caching?

預先建置依賴關係以加快Docker 映像建置

建置Docker 映像可能是一個耗時的過程,尤其是在需要依賴時在它們可以被緩存之前建構。為了優化這個過程,可以預先建立所有必要的模組並快取它們。

Dockerfile 結構

實現此目的的推薦Dockerfile 結構如下:

FROM docker.io/golang:1.16.7-alpine AS build
WORKDIR /src
COPY go.* .
RUN go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example .

FROM scratch
COPY --from=build /out/example /
登入後複製
登入後複製

或者,對於單一架構構建,您可以將Dockerfile 簡化為:

FROM docker.io/golang:1.16.7-alpine AS build
WORKDIR /src
COPY go.* .
RUN go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build go build -o /out/example .

FROM scratch
COPY --from=build /out/example /
登入後複製
登入後複製

快取掛載

這個的關鍵最佳化是在/root/.cache/go-build 上掛載一個快取目錄。這是 Go 建置快取的預設位置。第一次建置將填充此緩存,後續建置將重複使用快取的文件,從而顯著減少建置時間。

使用 Docker BuildKit 進行建置

使用此快取機制實際上,您必須在啟用 Docker BuildKit 的情況下進行建置。您可以透過在建置映像之前設定DOCKER_BUILDKIT=1 來實現此目的:

DOCKER_BUILDKIT=1 docker build -t myimage .
登入後複製

或者,您可以使用docker buildx:

docker buildx build -t myimage .
登入後複製

透過預先建置和快取相依性您可以大幅減少Docker 映像的建置時間,尤其是對於大型或複雜的專案。這種最佳化可以在開發和部署過程中節省大量時間。

以上是如何透過預先建置依賴項和使用建置快取來優化 Docker 映像建置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!