首頁 >後端開發 >Golang >手動依賴關係獲取如何優化 Go Docker 建置?

手動依賴關係獲取如何優化 Go Docker 建置?

Barbara Streisand
Barbara Streisand原創
2024-12-10 04:42:12159瀏覽

How Can Manual Dependency Fetching Optimize Go Docker Builds?

手動取得 Docker 建置最佳化的依賴

在 Go 程式設計環境中,go 工具通常會自動處理依賴管理和安裝。然而,對於優化的 Docker 映像構建,將依賴項安裝作為一個單獨的階段是有益的。

在 Go 1.11 及更早版本中,由於缺乏專用命令,這是不可能的。但是,問題 #26610 中的修復引入了 go mod download 指令。

要利用此指令來最佳化Docker 建置:

  1. 複製依賴項清單:將go.mod 和go.sum 檔案複製到Docker 映像的建置中
  2. 運行go mod download: 在Docker建置階段執行 go mod download 以手動取得依賴項。

這是Docker 多階段的範例使用層快取建置:

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"]

分離依賴安裝使Docker 能夠利用層緩存,使重建更加高效,因為許多程式碼變更通常不會影響依賴項。

此外,請考慮利用「容器化您的 Go 開發人員環境 – 第 2 部分」一文中所述的 Go 編譯器快取來進一步加快建置時間。

以上是手動依賴關係獲取如何優化 Go Docker 建置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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