Google Cloud の Buildpack は、アプリケーションのソースコードを取得してプロダクション レディなコンテナ イメージに変換するオープンソース プロジェクトです。Google Cloud で公開される Buildpack は、Cloud Native Buildpack の仕様を実装し、Google Cloud にデプロイ可能なコンテナをビルドして構成するように設計されています。
Buildpack は通常、言語コンポーネント、ツールチェーン、アプリ コンポーネント(Python、pip
、ウェブサーバーなど)の部分を処理します。Buildpack は、ビルダーというコレクションにグループ化されます。このコレクションは、プロジェクトのソースコードを分析してビルドプランを作成し、デプロイ可能なコンテナ イメージを生成します。
Buildpack を使用したコンテナ化
Google Cloud サーバーレス プロダクトでアプリケーション(サービス)または関数をデプロイして提供すると、Buildpack を使用して、実行可能なコンテナにコードがパッケージ化されます。Cloud Run では、ビルド済みのコンテナをデプロイすることも、ソースコードをデプロイして Cloud Run でコンテナビルドを管理することもできます。Cloud Run functions と App Engine では、コンテナ化プロセスがフルマネージドです。つまり、ソースコードをデプロイすると、コンテナ イメージのパッケージ化と変換がすべて自動的に行われます。
各コンテナ イメージは、ソースコード、システムとライブラリの依存関係、構成データ、静的アセットなど、デプロイの実行に必要なすべてのコンポーネントを使用してビルドされます。デフォルトでは、Google Cloud のサーバーレス プロダクトは、デプロイ パイプライン用の Cloud Build と、コンテナ イメージのストレージと管理に使用される Container Registry または Artifact Registry など、基盤となる同じサービスを使用します。
Google Cloud の Buildpack を使用する場合:
- ビルダーと Buildpack は、ビルドプロセスを処理し、実行可能なコンテナ イメージを作成するように事前構成されています。
- Buildpack は複数のプログラミング言語をサポートし、ソースコードで使用されている言語を自動的に検出します。
- Buildpack をカスタマイズして拡張すると、追加のシステム依存関係をインストールできます。ただし、デフォルト ビルダーは、プログラミング言語のパッケージ リポジトリから依存関係をインストールする場合や、言語の共通依存関係ファイルを使用するなど、プログラミング言語で必要となる一般的なタスクを処理できます。
Buildpack を使用してコードをコンテナ化する
Buildpack は、次のことを行うためにローカルまたはリモートで使用できます。
アプリを起動する標準的な方法を除外するプログラミング言語の場合、Procfile
を使用して、コンテナの起動時に呼び出すプロセスを定義できます。Procfile
は、任意の Buildpack タイプのデフォルトの開始プロセスをオーバーライドするために使用できますが、Python など、一部のものでは必須になります。
次のステップ
- ビルダー
- アプリケーションを構築する
- 関数を作成する
- Cloud Native Buildpack について学習する