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
コマンドに渡します。