Cloud Build を使用して Docker イメージをビルドし、push する
Docker イメージをビルドし、そのイメージを Artifact Registry に push して、Cloud Build の使用を開始する方法を学習します。Artifact Registry では、プライベート・パッケージと Docker コンテナ イメージを管理する単一の場所が準備されています。
まず、Docker 構成ファイルの Dockerfile
を使用してイメージをビルドし、次に Cloud Build 構成ファイルを使用して同じイメージをビルドします。
このタスクを Cloud Shell エディタで直接行う際のガイダンスについては、「ガイドを表示」をクリックしてください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Compute Engine and Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Compute Engine and Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- デフォルトの Compute Engine サービス アカウントに十分な権限があることを確認します。
storage.admin
ロールを追加します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/storage.admin"
artifactregistry.writer
ロールを追加します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/artifactregistry.writer"
-
iam.serviceAccountUser
ロールを追加します。これには、ランタイムにデプロイするactAs
権限が含まれます。gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
これらのロールのいずれかを追加できない場合は、プロジェクト管理者にお問い合わせください。
ビルドするソースファイルを準備する
コンテナ イメージにパッケージ化するには、サンプルのソースコードが必要です。このセクションでは、シェル スクリプトと Dockerfile
を作成します。Dockerfile
は、Docker がイメージを作成するための指示を含むテキスト ドキュメントです。
ターミナル ウィンドウを開きます。
quickstart-docker
という名前で新しいディレクトリを作成し、そのディレクトリに移動します。mkdir quickstart-docker cd quickstart-docker
次の内容のファイルを
quickstart.sh
という名前で作成します。次の内容のファイルを
Dockerfile
という名前で作成します。ターミナル ウィンドウで次のコマンドを実行して、
quickstart.sh
を実行可能にします。chmod +x quickstart.sh
Artifact Registry で Docker リポジトリを作成する
場所
us-west2
に「Docker repository」という説明の付いたquickstart-docker-repo
という新しい Docker リポジトリを作成します。gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
リポジトリが作成されたことを確認します。
gcloud artifacts repositories list
表示されたリポジトリのリストに
quickstart-docker-repo
が表示されます。
Dockerfile を使用してイメージをビルドする
Cloud Build で、Docker イメージを Dockerfile
を使用してビルドできます。個別の Cloud Build 構成ファイルは不要です。
Dockerfile
を使用してビルドするには:
次のコマンドを実行して、Google Cloud プロジェクト ID を取得します。
gcloud config get-value project
quickstart.sh
とDockerfile
を含むディレクトリから次のコマンドを実行します。gcloud builds submit --region=us-west2 --tag us-west2-docker.pkg.dev/PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1
ビルドが完了すると、次のような出力が表示されます。
DONE
------------------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
545cb89c-f7a4-4652-8f63-579ac974be2e 2020-11-05T18:16:04+00:00 16S gs://gcb-docs-project_cloudbuild/source/1604600163.528729-b70741b0f2d0449d8635aa22893258fe.tgz us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1 SUCCESS
Dockerfile
で、quickstart-image
という名前の Docker イメージをビルドしました。このイメージを Artifact Registry に push します。
ビルド構成ファイルを使用してイメージをビルドする
このセクションでは、Cloud Build 構成ファイルを使用して、上記と同じ Docker イメージを作成します。ビルド構成ファイルは、指定した内容に基づいてタスクを実行するよう Cloud Build に指示します。
quickstart.sh
とDockerfile
があるディレクトリに、cloudbuild.yaml
という名前のファイルを作成します。このファイルには以下を含めます。このファイルがビルド構成ファイルです。ビルド時に、Cloud Build が自動的に$PROJECT_ID
をプロジェクト ID に置き換えます。次のコマンドを実行してビルドを開始します。
gcloud builds submit --region=us-west2 --config cloudbuild.yaml
ビルドが完了すると、次のような出力が表示されます。
DONE
------------------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
046ddd31-3670-4771-9336-8919e7098b11 2020-11-05T18:24:02+00:00 15S gs://gcb-docs-project_cloudbuild/source/1604600641.576884-8153be22c94d438aa86c78abf11403eb.tgz us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1 SUCCESS
ビルド構成ファイルを使用して quickstart-image
をビルドし、イメージを Artifact Registry に push しました。
ビルドの詳細を表示
Google Cloud コンソールで Cloud Build ページを開きます。
必要に応じて、プロジェクトを選択し、[開く] をクリックします。
[ビルド履歴] ページが表示されます。
必要に応じて、[リージョン] プルダウン メニューで
us-west2
を選択して、そのリージョンのビルドを表示します。このクイックスタートで実行したビルドごとに 1 つずつ、2 つのビルドが表示されます。
いずれかのビルドをクリックします。
[ビルドの詳細] ページが表示されます。
ビルドのアーティファクトを表示するには、[ビルドの概要] で [ビルド アーティファクト] をクリックします。
出力は次のようになります。
このページから、ビルドログをダウンロードして、Artifact Registry でイメージの詳細を表示できます。
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
Google Cloud コンソールで Artifact Registry ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
[quickstart-docker-repo] を選択します。
[削除] をクリックします。
このクイックスタートで作成したリポジトリの削除は完了です。
次のステップ
- Docker イメージを実行する方法を確認する。
- 基本的なビルド構成ファイルを作成する方法を学習する。
- Cloud Build を使用してデプロイする方法を学習する。
- Node.js アプリケーションをビルドする方法を学習する。
- Java アプリケーションをビルドする方法を学習する。
- Go アプリケーションをビルドする方法を学習する。