指定 Go 版本
根據預設,Go 建構包會使用最新的 Go 編譯器穩定版。如果應用程式需要特定版本,您可以使用 GOOGLE_GO_VERSION
環境變數提供 semver 限制,用於選取可用的 Go 版本。
pack build sample-go --builder=gcr.io/buildpacks/builder \
--env GOOGLE_GO_VERSION="17.x.x"
編譯旗標
Go 建構包會使用 go build command
將應用程式來源編譯為可執行檔。下列環境變數可用於設定建構行為:
GOOGLE_BUILDABLE
指定可建構單元的路徑。範例:Go 的./maindir
會建構根目錄為maindir
的套件。GOOGLE_CLEAR_SOURCE
從應用程式映像檔中省略原始碼。如果應用程式依附靜態檔案 (例如 Go 範本),設定這個變數可能會導致應用程式發生異常。範例:true
、True
、1
會清除來源。GOOGLE_GOGCFLAGS
以-gcflags
值的形式傳遞至go build
和go run
,且不進行解讀。範例:all=-N -l
可啟用競爭狀態分析,並變更來源檔案路徑在二進位檔中記錄的方式。GOOGLE_GOLDFLAGS
傳遞至 go build 和 go run 的-ldflags
值,不經過解讀。範例:-s -w
用於移除並縮減二進位檔大小。
管理依附元件
建議您使用 Go 模組管理 Go 應用程式中的依附元件。Go 建構包會使用 go build
指令建構應用程式,因此會與 Go 本身的行為相符。為確保應用程式使用模組感知模式,您應在應用程式根目錄中加入 go.mod
檔案。
供應商依附元件
供應商會將應用程式使用的套件複製到應用程式目錄中,而不是在建構程序期間從來源下載模組。Go 提供 go 建構指令,將應用程式所需的套件供應給供應商,並放入應用程式根目錄中的 vendor
目錄。
設定應用程式進入點
根據預設,Go 建構包會設定應用程式容器項目,以便在編譯應用程式來源時叫用產生的 main
可執行檔。如需覆寫此值,您可以提供 Procfile
或傳遞 GOOGLE_ENTRYPOINT
環境變數。
環境變數
Go Buildpack 支援下列環境變數,可用於自訂容器
GO
請參閱 Go 說明文件中的「環境變數」
範例: GOFLAGS=-flag=value
將 -flag=value
傳遞至 go
指令。