亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 go.mod 手動獲取依賴項?

從 go.mod 手動獲取依賴項?

Go
智慧大石 2023-04-04 14:16:30
我正在使用帶有模塊支持的 go 1.11。我知道 go 工具現在會在構建/安裝時自動安裝依賴項。我也明白其中的道理。我正在使用 docker 來構建我的二進制文件。在許多其他生態系統中,復制依賴項清單(package.json、requirements.txt 等)并將依賴項安裝為獨立于構建的獨立階段是很常見的。這利用了 docker 的層緩存,并使重建更快,因為通常代碼更改遠遠超過依賴項更改。我想知道vgo有沒有辦法做到這一點?
查看完整描述

4 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

這是一個問題#26610,現在已修復。

所以現在你可以使用:

go?mod?download

為此,您只需要go.mod/go.sum文件。

例如,下面是如何進行緩存的多階段 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"]


查看完整回答
反對 回復 2023-04-04
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

您可以使用將在主模塊的根文件夾中go mod vendor創建一個文件夾的命令,并將所有依賴項復制到其中。vendor在此之后,您可以將-mod=vendor參數傳遞給 go 工具,然后vendor文件夾中的依賴項將用于構建/編譯/測試您的應用程序。

那么你可以做些什么來加速你的構建:

  1. 運行go mod vendor命令以獲得依賴項的實際版本。

  2. 保存/緩存此vendor文件夾。

  3. 在構建期間,恢復此vendor文件夾,并通過將參數傳遞給 go 工具來構建/安裝您的應用程序-mod=vendor,因此不會下載任何依賴項,但vendor會使用該文件夾的內容。

引用自go help mod

模塊和銷售

使用模塊時,go 命令完全忽略供應商目錄。

默認情況下,go 命令通過從源下載模塊并使用這些下載的副本來滿足依賴關系(如前一節所述,在驗證之后)。為了允許與舊版本的 Go 互操作,或確保用于構建的所有文件都存儲在一個文件樹中,'go mod vendor' 在主模塊的根目錄中創建一個名為 vendor 的目錄并將所有文件存儲在那里來自依賴模塊的包,這些包需要支持主模塊中包的構建和測試。

要使用主模塊的頂級供應商目錄進行構建以滿足依賴性(禁用通常的網絡資源和本地緩存),請使用“go build -mod=vendor”。請注意,僅使用主模塊的頂級供應商目錄;其他位置的供應商目錄仍然被忽略。


查看完整回答
反對 回復 2023-04-04
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

我想使用 重新下載所有依賴項go mod,這就是我所做的:

  1. 去你的GOROOT

  2. sudo rm -rf pkg/mod/

  3. 轉到文件go.mod所在的目錄

  4. go mod download


查看完整回答
反對 回復 2023-04-04
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

您可以使用包管理器,其中有很多,例如dep、glide和govendor。dep較新,將作為官方依賴管理工具集成到 go 工具鏈中。

我們還為 go 應用程序制作 docker 鏡像,我們使用dind制作這些鏡像,我們準備了一個預裝了所有依賴項的 CI/CD 鏡像,以加快構建速度。不過,需要編寫一些腳本才能將所有內容粘合在一起。

此外,將依賴項分層可能會導致 docker 鏡像的體積變大。我建議嘗試多階段構建,這有助于使圖像變得超級精簡。


查看完整回答
反對 回復 2023-04-04
  • 4 回答
  • 0 關注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號