將依賴項安裝與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中文網其他相關文章!