部署 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)