首頁 >後端開發 >Golang >如何將 Go 模組相依性安裝與建置流程分開以加快 Docker 建置速度?

如何將 Go 模組相依性安裝與建置流程分開以加快 Docker 建置速度?

Susan Sarandon
Susan Sarandon原創
2024-12-20 18:26:11826瀏覽

How Can I Separate Go Module Dependency Installation from the Build Process for Faster Docker Builds?

將依賴項安裝與Go 模組中的建置分開

Go 1.11 引入了模組支持,它可以在建置期間自動進行依賴項安裝並最大程度地減少重建。然而,一些開發人員更喜歡在單獨的階段手動獲取依賴項,以利用容器緩存並優化重建速度。

vgo 解

在 Go 的早期版本中,有沒有手動取得相依性的本機方法。但是,Go 儲存庫上的問題 #26610 解決了此功能:

go mod download

此命令可讓您手動取得依賴項,而無需執行建置流程。要使用此命令,您只需要專案目錄中的 go.mod 和 go.sum 檔案。

Docker 實現

這是Docker 構建腳本的示例實現緩存的多階段構建並利用go mod download:

FROM golang:1.17-alpine as builder
RUN apk --no-cache add ca-certificates git
WORKDIR /build

# Fetch dependencies
COPY go.mod go.sum ./
RUN go mod download

# Build
COPY . ./
RUN CGO_ENABLED=0 go build

# Create final image
FROM alpine
WORKDIR /
COPY --from=builder /build/myapp .
EXPOSE 8080
CMD ["/myapp"]

通過實現依賴項和建置階段的分離,您可以利用容器快取進行依賴項安裝並最大限度地減少後續建置時間。

替代注意事項

除了go mod 下載方法之外,文章「容器化您的Go 開發人員」環境– 第2 部分」探討了另一種最佳化建置速度的技術:利用Go 編譯器快取。

以上是如何將 Go 模組相依性安裝與建置流程分開以加快 Docker 建置速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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