Goアプリをデプロイ

Go Modulesに基づくすべてのプロジェクトをデプロイできます。ただし、プロジェクトのルートディレクトリにmain.goが必要です。それがプログラムのコンパイルエントリとなります。

カスタムビルドエントリーポイント

複数のビルドエントリーポイントがある場合、それらを cmd ディレクトリに配置する必要があります。例えば、cmd/server-a/main.gocmd/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.jsonbuild_command を設定することもできます:

{
    "build_command": "go generate ./..."
}

依存関係のインストールが完了し、ビルドプロセスの前にビルド前コマンドが実行されます。

cgo の有効化

Go プロジェクトで cgo を使用する必要がある場合、zbpack.jsongo.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)