指定 Go 版本
默认情况下,Go Buildpack 使用最新的稳定版 Go 编译器。如果您的应用需要使用特定版本,您可以使用 GOOGLE_GO_VERSION
环境变量提供 semver 限制条件,该限制条件将用于选择可用的 Go 版本。
pack build sample-go --builder=gcr.io/buildpacks/builder \
--env GOOGLE_GO_VERSION="17.x.x"
编译标志
Go Buildpack 使用 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
作为-ldflags
值传递给 go build 和 go run,不含任何解释。示例:-s -w
用于清理二进制文件并缩减其大小。
管理依赖项
我们建议您使用 Go 模块来管理 Go 应用中的依赖项。Go Buildpack 会使用 go build
命令来构建应用,因此与 Go 本身的行为相匹配。如需确保您的应用使用模块感知模式,您应该在应用根目录中包含 go.mod
文件。
Vendoring 依赖项
Vendoring 会将您的应用使用的软件包复制到应用目录中,而不是在构建过程中通过其源代码下载模块。Go 提供 go build 命令,以将应用所需的软件包复制到应用根目录中名为 vendor
的目录中。
配置应用入口点
默认情况下,Go Buildpack 会将应用容器条目配置为调用编译应用源代码时生成的 main
可执行文件。您可以通过提供 Procfile
或传递 GOOGLE_ENTRYPOINT
环境变量来更改这一行为。
环境变量
Go Buildpack 支持使用以下环境变量来自定义容器
请参阅有关环境变量的 Go 文档
示例:GOFLAGS=-flag=value
会将 -flag=value
传递给 go
命令。