Go バージョンの指定
デフォルトでは、Go Buildpack は Go コンパイラの最新の安定版を使用します。アプリケーションで特定のバージョンが必要な場合は、GOOGLE_GO_VERSION 環境変数に semver 制約を指定して、利用可能な Go バージョンの選択で使用できます。
pack build sample-go --builder=gcr.io/buildpacks/builder \
--env GOOGLE_GO_VERSION="17.x.x"
コンパイル フラグ
Go Buildpack は、go build command を使用してアプリケーション ソースを実行ファイルとしてコンパイルします。次の環境変数を使用して、ビルドの動作を構成できます。
GOOGLE_BUILDABLEビルド可能ユニットへのパスを指定します。例: Go の./maindirは、maindirをルートとするパッケージをビルドします。GOOGLE_CLEAR_SOURCEアプリケーション イメージからソースコードを省略します。アプリケーションが Go テンプレートなどの静的ファイルに依存している場合、この変数を設定すると、アプリケーションが適切に動作しない可能性があります。例:true、True、1はソースを消去します。GOOGLE_GOGCFLAGS解釈なしで-gcflags値としてgo buildとgo runに渡されます。例:all=-N -lは、競合状態分析を有効にし、ソースのファイルパスをバイナリに記録する方法を変更します。GOOGLE_GOLDFLAGS解釈なしに-ldflags値として go build と go run に渡されます。例:-s -wは、バイナリサイズを除去してサイズを小さくする場合に使用します。
依存関係の管理
Go モジュールを使用して、Go アプリの依存関係を管理することをおすすめします。Go Buildpack は go build コマンドを使用してアプリをビルドしますが、結果として、これは Go 自体の動作と一致します。アプリでモジュール対応モードを使用するには、アプリケーションのルートに go.mod ファイルを配置する必要があります。
依存関係のベンダリング
ベンダリングでは、ビルドプロセス中にソースからモジュールをダウンロードする代わりに、アプリが使用するパッケージがアプリケーションのディレクトリにコピーされます。Go には、アプリのルート ディレクトリにある vendor というディレクトリにアプリに必要なパッケージをベンダリングするための go build コマンドが用意されています。
アプリケーション エントリポイントを構成する
デフォルトでは、Go Buildpack は、アプリケーション ソースのコンパイル時に生成される main 実行可能ファイルを呼び出すように、アプリケーション コンテナのエントリを構成します。これをオーバーライドする場合は、Procfile を指定するか、GOOGLE_ENTRYPOINT 環境変数を渡します。
環境変数
Go Buildpack は、コンテナをカスタマイズするために次の環境変数をサポートしています。
GO
環境変数については、Go のドキュメントをご覧ください。
例: GOFLAGS=-flag=value は -flag=value を go コマンドに渡します。