部署 Go 项目
所有基于 Go Modules (opens in a new tab) 的项目都可以部署。但你需要在项目根目录有一个 main.go
作为程序编译入口。
自定义程序编译入口
如果你有多个程序编译入口,你需要将它们放在 cmd
目录下,例如一个 cmd/server-a/main.go
和一个 cmd/server-b/main.go
。
Zeabur 会自动识别并部署 cmd
目录下与 Service 名称相同的程序编译入口。
设置编译前命令
如果你的 Go 项目需要在编译前执行诸如 go generate
相关的命令,可以使用 ZBPACK_BUILD_COMMAND
环境变量设置。
ZBPACK_BUILD_COMMAND=go generate ./...
也可以在 zbpack.json
设置 build_command
:
{
"build_command": "go generate ./..."
}
你的编译前命令会在依赖安装完成、程序编译前执行。
启用 cgo
如果你的 Go 项目需要使用到 cgo,可以在 zbpack.json
设置 cgo
:
{
"cgo": true
}
或者是设置 CGO_ENABLED
环境变量:
CGO_ENABLED=1
Zeabur 会自动启用 cgo 并安装相关的 C/C++ 编译工具链。
监听端口
请确保你的程序监听在 PORT
环境变量指定的端口上。 这个环境变量是由 Zeabur 自动注入的,你不需要手动设置。
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.ListenAndServe(":"+port, nil)
Serverless 支持
Zeabur 支持将 Go 部署为 serverless 项目。但目前需要 opt-in。 请参考 启用 Serverless 页面启用 serverless 支持。