Buildpack を使用してコンテナ イメージをビルドする方法は 2 つあります。
pack
CLI を使用してローカルでビルドし、関数をローカルでテストします。また、デプロイ前に変更のプロトタイプを迅速に作成します。- Cloud Build を使用してリモートでビルドします。Cloud Build を使用したビルドは、リソースを大量に消費するビルドプロセスを含む関数に有用です。また、ソフトウェア サプライ チェーンの保護にも役立ちます。
関数を作成するようにプロジェクトを構成する
Buildpack を使用して関数を作成するには、Functions Framework ライブラリを使用します。GOOGLE_FUNCTION_TARGET
環境変数に、エントリポイントとして使用する関数の名前を設定する必要があります。Cloud Functions で環境変数を使用する方法については、Cloud Functions サービスを構成するをご覧ください。
ローカルビルド
pack
CLI を使用して、ローカルで関数をコンテナ イメージに作成します。
始める前に
- Docker Community Edition(CE)をワークステーションにインストールします。
pack
は Docker を OCI イメージ ビルダーとして使用します。 - Pack CLI をインストールします。
- GitHub からサンプル アプリケーションを取得するために Git ソース管理ツールをインストールします。
ローカルで関数を作成する
pack build
コマンドを使用して、デフォルトのビルダー --builder=gcr.io/buildpacks/builder
を指定し、コンテナ イメージをローカルでビルドします。
pack build --builder=gcr.io/buildpacks/builder IMAGE_NAME
IMAGE_NAME
は、コンテナ イメージの名前に置き換えます。
ビルドイメージと実行イメージを拡張して、コンテナ イメージをカスタマイズすることもできます。
サンプル関数をローカルで作成する
次の例は、ローカルでサンプルを作成する方法を示しています。
- ローカルマシンにサンプル リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- アプリケーションのサンプルコードが含まれているディレクトリに移動します。
Go
cd buildpack-samples/sample-functions-framework-go
Java
cd buildpack-samples/sample-functions-framework-java-mvn
Node.js
cd buildpack-samples/sample-functions-framework-node
Python
cd buildpack-samples/sample-functions-framework-python
Ruby
cd buildpack-samples/sample-functions-framework-ruby
pack
を使用してサンプル関数を作成します。Go
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-go
Java
pack build --builder gcr.io/buildpacks/builder:v1 sample-functions-java-mvn
Node.js
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-node
Python
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-python
Ruby
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-ruby
docker
を使用してイメージを実行します。Go
docker run -p8080:8080 sample-functions-framework-go
Java
docker run -it -ePORT=8080 -p8080:8080 sample-functions-java-mvn
Node.js
docker run -it -ePORT=8080 -p8080:8080 sample-functions-framework-node
Python
docker run -it -ePORT=8080 -p8080:8080 sample-functions-framework-python
Ruby
docker run -it -ePORT=8080 -p8080:8080 sample-functions-framework-ruby
- localhost:8080 を参照して、実行中の関数にアクセスします。
リモートビルド
Cloud Build を使用してアプリケーションをコンテナ イメージに作成し、イメージの保存とデプロイを行うコンテナ リポジトリとして Artifact Registry を使用します。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Build and Artifact Registry API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Build and Artifact Registry API を有効にします。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
- Google Cloud プロジェクトがコンテナ イメージ リポジトリにアクセスできることを確認します。
Artifact Registry の Docker リポジトリへのアクセスを構成するには:
- Google Cloud プロジェクトの同じロケーションに Docker リポジトリを新規作成します。
gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION"
次のように置き換えます。REPO_NAME
は、Docker リポジトリに選択した名前に置き換えます。REGION
は、Google Cloud プロジェクトのロケーションに、またはそれに最も近いロケーションに置き換えます。DESCRIPTION
は選択した説明に置き換えます。
たとえば、「Docker repository」という説明を使用して
us-west2
にdocker
リポジトリを作成するには、次のコマンドを実行します。gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
- リポジトリが作成されたことを確認します。
gcloud artifacts repositories list
Docker リポジトリに選択した名前がリストに表示されます。
- Google Cloud プロジェクトの同じロケーションに Docker リポジトリを新規作成します。
リモートで関数を作成する
gcloud builds
コマンドと image
フラグを使用して、コンテナ イメージをビルドしてリポジトリにアップロードします。
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
次のように置き換えます。
LOCATION
は、コンテナ リポジトリのリージョン名に置き換えます。例:us-west2
PROJECT_ID
は、Google Cloud プロジェクトの ID に置き換えます。REPO_NAME
は Docker リポジトリの名前に置き換えます。IMAGE_NAME
は、コンテナ イメージの名前に置き換えます。
例:
gcloud builds submit --pack image=us-west2-docker.pkg.dev/my-project-id/my-buildpacks-docker-repo
リモートでサンプル関数を作成する
次の例は、サンプルをリモートで作成し、コンテナ イメージが Artifact Registry のリポジトリに push されたことを確認する方法を示しています。
- ローカルマシンにサンプル リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- アプリケーションのサンプルコードが含まれているディレクトリに移動します。
Go
cd buildpack-samples/sample-functions-framework-go
Java
cd buildpack-samples/sample-functions-framework-java-mvn
Node.js
cd buildpack-samples/sample-functions-framework-node
Python
cd buildpack-samples/sample-functions-framework-python
Ruby
cd buildpack-samples/sample-functions-framework-ruby
gcloud
を使用して、アプリケーションのソースコードを Cloud Build に送信します。Go
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-go
Java
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-gradle
Node.js
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-node
Python
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-python
Ruby
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-ruby
次のように置き換えます。
LOCATION
は、コンテナ リポジトリのリージョン名に置き換えます。例:us-west2-docker.pkg.dev
PROJECT_ID
は、Google Cloud プロジェクトの ID に置き換えます。REPO_NAME
は、Docker リポジトリの名前に置き換えます。
-
サンプル関数が
REPO_NAME
に正常に公開されていることを確認します。gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME
次のように置き換えます。
LOCATION
は、コンテナ リポジトリのリージョン名に置き換えます。例:us-west2
PROJECT_ID
は、Google Cloud プロジェクトの ID に置き換えます。REPO_NAME
は Docker リポジトリの名前に置き換えます。
次のステップ
- 関数イメージを Cloud Run にデプロイする。
- 環境変数を設定する。
- ビルドイメージを構成する。
- キャッシュ イメージを使用してビルドを高速化する。