嗨,當我將二進制檔案推送到 cf 時,我們看到下載了錯誤的 go 版本
推送代碼的步驟
- 運行 go build 命令
GOOS="linux" GOARCH=amd64 go build ${LDFLAGS} -o localdeploy/some-app main.go
- cd 本地部署
- cf push -f manifest.yml
注意:localdeploy 檔案夾包含 manifest.yml 和 some-app 二進制檔案
Go.mod 檔案
go 1.16
require (
github.com/cloudfoundry-community/go-cfenv v1.18.0
github.com/gin-gonic/gin v1.8.1
github.com/google/uuid v1.3.0
github.com/rs/zerolog v1.28.0
github.com/stretchr/testify v1.8.0
)
清單檔案.yml
applications:
- name: some-app-1000-snapshot
command: ./some-app
stack: cflinuxfs3
buildpacks:
- https://github.com/cloudfoundry/binary-buildpack.git
Then i see following logs downloading go 1.15.5 instead of go 1.16
Below are the logs getting when pushed to cf --- application is working but why it is downloading 1.15 instead of 1.16 which is present in my mod file
Staging app and tracing logs...
-----> Download go 1.15.5
-----> Running go build supply
/tmp/buildpackdownloads/d612ac0e3047b21e80ecfeae72c39f81 ~
~
-----> Binary Buildpack version 1.0.46
-----> Download go 1.15.5
-----> Running go build finalize
/tmp/buildpackdownloads/d612ac0e3047b21e80ecfeae72c39f81 ~```
uj5u.com熱心網友回復:
二進制 buildpack 不會為您的應用程式安裝任何東西。它實際上是一個無操作構建包。
由于您已經在本地編譯了應用程式,因此用于二進制檔案的 Go 版本是本地安裝在計算機上的版本。您可以根據本地安裝的內容控制該版本。
二進制 buildpack 的輸出在這里令人困惑,因為您確實看到它下載的是較舊的 Go 版本。發生這種情況的原因是 buildpack 本身是用 Go 撰寫的,并且您在 manifest.yml 中有 buildpack 定義指向 buildpack 的源代碼。因此,要運行 buildpack,它必須先編譯自己。它需要 Go 來執行此操作,因此它會下載 Go,自行構建,然后自行運行。這就是你在它所說的地方看到的Download go 1.15.5。
大多數(全部?)CloudFoundry 安裝將默認使用二進制 buildpack,因此您無需參考源代碼。運行cf buildpacks并從串列中獲取二進制 buildpack 的名稱。這將是類似的東西binary-buildpackor binary_buildpack。編輯您的 manifest.yml 并替換https://github.com/cloudfoundry/binary-buildpack.git為該值。
現在,當您推送時,它將使用已經編譯的現有 buildpack,并且您不應該看到那些有關 Go 正在下載的訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/512025.html
標籤:去云代工二进制文件构建包
上一篇:Go:比較"google.golang.org/genproto/googleapis/api/serviceusage/v1".State和字串
下一篇:我應該使用同步來查看單個指標嗎?
