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

如何有效快取Golang專案的Docker映像中的依賴關係?

Susan Sarandon
發布: 2024-10-27 00:51:02
原創
398 人瀏覽過

How to Effectively Cache Dependencies in Docker Images for Golang Projects?

Docker 映像中的預先建置與快取相依性

製作 Docker 映像時,需要快取相依性以加快建置流程。本文解決了預先建置所有必需模組並快取它們的問題。

一種方法是在建置映像時新增一個層來快取相依性。但是,此步驟需要建立依賴關係,這可能非常耗時。另一種方法是使用 go build 指令。

另一個選項是預先建立 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 /
登入後複製

對於單一架構進行簡化,相關的快取方面如下所示:

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 build 指令建置映像時包含 DOCKER_BUILDKIT=1,或使用 docker buildx。測試證實了這種方法的有效性。

以上是如何有效快取Golang專案的Docker映像中的依賴關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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