Deploy Go App
All projects based on Go Modules can be deployed. But you need to have a main.go
in the project root directory as the program compilation entry.
Custom Application Entry Point
If you have multiple entry points, you need to place them in the cmd
directory, such as a cmd/server-a/main.go
and a cmd/server-b/main.go
.
Zeabur will automatically recognize and deploy the application in the cmd
directory that matches the service name.
Setting Pre-build Commands
If your Go project requires running commands like go generate
before building, you can set them using the ZBPACK_BUILD_COMMAND
environment variable.
ZBPACK_BUILD_COMMAND=go generate ./...
You can also set the build_command
in zbpack.json
:
{
"build_command": "go generate ./..."
}
Your pre-build commands will run after dependencies are installed and before the build process.
Enabling cgo
If your Go project needs to use cgo, you can set cgo
in zbpack.json
:
{
"cgo": true
}
Or set the CGO_ENABLED
environment variable:
CGO_ENABLED=1
Zeabur will automatically enable cgo and install the necessary C/C++ toolchain.
Listen on Port
Zeabur will automatically set the PORT
environment variable for the Go program to listen on.
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.ListenAndServe(":"+port, nil)
Serverless Support
Zeabur supports deploying Go as a serverless project. However, it currently requires opt-in. Please refer to the Enable Serverless page to enable serverless support.