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=true
Zeabur は自動的に cgo を有効化し、必要な C/C++ ツールチェーンをインストールします。
ポートでリッスン
Zeabur は Go プログラムがリッスンする PORT
環境変数を自動的に設定します。
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.ListenAndServe(":"+port, nil)