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