使用Go 模組手動擷取相依性
在基於Go 模組的相依性管理領域,Go 指令(例如go build 或go install )會自動進行取得並安裝所需的依賴項。然而,當使用 Docker 進行二進位建置時,將依賴項安裝提取到單獨的階段以利用快取並優化建置效能通常是有益的。
手動依賴項檢索的解決方案
Go 1.11 版本引入了模組支持,但也帶來了一個限制:無法手動獲取依賴項。不過,此問題已透過問題 #26610 中的修復得到解決。
現在,您可以使用以下命令輕鬆手動檢索依賴項:
go mod download
此命令僅需要 go. mod 和 go.sum 檔案運行。
範例Docker建置
以下是如何在多階段Docker 建置中實作快取相依性下載的範例:
# Stage 1: Build dependencies FROM golang:1.17-alpine AS builder RUN apk --no-cache add ca-certificates git WORKDIR /build COPY go.mod go.sum ./ RUN go mod download # Stage 2: Build app COPY . ./ RUN CGO_ENABLED=0 go build # Stage 3: Create final image FROM alpine WORKDIR / COPY --from=builder /build/myapp . EXPOSE 8080 CMD ["/myapp"]
其他最佳化
對於要進一步增強效能,請考慮探索Go編譯器緩存,如「容器化您的 Go 開發人員環境 – 部分」所述2.」
以上是如何手動下載 Go 模組相依性以優化 Docker 建置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!