このページでは、Cloud Build を使用して Docker イメージをビルドし、そのイメージを Container Registry に push する方法について説明します。まず Dockerfile
を使用してイメージをビルドし、次に同じイメージを Cloud Build ビルド構成ファイルでビルドします。
始める前に
-
Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
GCP Console のプロジェクト セレクタのページで、GCP プロジェクトを選択または作成します。
-
Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 詳しくは、課金を有効にする方法をご覧ください。
- Cloud Build API を有効にします。
- Cloud SDK をインストールして初期化します。
Google Cloud Platform にログインする
gcloud
コマンドライン ツールを承認して、プロジェクトにアクセスします。gcloud auth login
gcloud
ツール用のプロジェクトを構成します。ここで、[PROJECT_ID]
は、前のセクションで作成または選択した GCP プロジェクト ID です。gcloud config set project [PROJECT_ID]
ソースファイルの準備
ビルドするサンプル ソースコードが必要です。このセクションでは、簡単な Hello World のサンプルと Dockerfile
を作成します。
次の内容のファイルを
quickstart.sh
という名前で作成します。#!/bin/sh echo "Hello, world! The time is $(date)."
次の内容のファイルを
Dockerfile
という名前で作成します。FROM alpine COPY quickstart.sh / CMD ["/quickstart.sh"]
ターミナル ウィンドウを開きます(まだ開いていない場合)。
次のコマンドを実行して、
quickstart.sh
を実行可能にします。chmod +x quickstart.sh
Dockerfile によるビルド
Cloud Build で、Docker イメージを Dockerfile
を使用してビルドできます。個別のビルド構成ファイルは不要です。
次のコマンドを、quickstart.sh
と Dockerfile
があるディレクトリから実行します。ここで、[PROJECT_ID]
は GCP プロジェクト ID です。
gcloud builds submit --tag gcr.io/[PROJECT_ID]/quickstart-image .
ビルドが完了すると、次のような出力が表示されます。
DONE
-------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE STATUS
$BUILD_ID 2016-09-28T13:46:29+00:00 9S gs://[PROJECT_ID]_cloudbuild/source/1508159187.8-b0d8841d51674a30aebd1e55bb99486f.gz gcr.io/[PROJECT_ID]/quickstart-image (+1 more) SUCCESS
Dockerfile
で、quickstart-image
という名前の Docker イメージをビルドしました。このイメージを Container Registry に push します。
ビルド構成ファイルによるビルド
このセクションでは、ビルド構成ファイルを使用して、上と同じ Docker イメージをビルドします。ビルド構成の指定に基づいて、実行するタスクが Cloud Build に指示されます。
quickstart.sh
とDockerfile
があるディレクトリに、cloudbuild.yaml
という名前のファイルを作成します。このファイルには以下を含めます。このファイルがビルド構成ファイルです。ビルド時に、Cloud Build が自動的に$PROJECT_ID
をプロジェクト ID に置き換えます。steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/quickstart-image', '.' ] images: - 'gcr.io/$PROJECT_ID/quickstart-image'
次のコマンドを実行してビルドを開始します。
gcloud builds submit --config cloudbuild.yaml .
ビルドが完了すると、次のような出力が表示されます。
DONE
-------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE STATUS
$BUILD_ID 2016-09-28T13:46:29+00:00 8S gs://[PROJECT_ID]_cloudbuild/source/1508158566.55-725755714baa4b7e9e99984c422ec4e2.gz gcr.io/[PROJECT-ID]/quickstart-image (+1 more) SUCCESS
ビルド構成ファイルを使用して quickstart-image
をビルドし、イメージを Container Registry に push しました。
ビルドの詳細の表示
Google Cloud Platform Console で Cloud Build ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
[ビルド履歴] ページが表示されます。
特定のビルドをクリックします。
[ビルドの詳細] ページが表示されます。
イメージをクリックします。
[Container Registry] ページにイメージの詳細が表示されます。
オプション: Docker イメージを実行する
ビルドしたイメージが想定どおりに動作することを確認するため、Docker を使用してイメージを実行できます。
Container Registry とやり取りするときに Container Registry 認証情報を使用するよう、Docker を構成します。
gcloud auth configure-docker
次のようなメッセージが表示されます。
The following settings will be added to your Docker config file located at [/.docker/config.json]: { "credHelpers": { "gcr.io": "gcloud", "us.gcr.io": "gcloud", "eu.gcr.io": "gcloud", "asia.gcr.io": "gcloud", "staging-k8s.gcr.io": "gcloud", "marketplace.gcr.io": "gcloud" } } Do you want to continue (Y/n)?
y
と入力して Enter キーを押します。以前ビルドした Docker イメージを実行します。
[PROJECT_ID]
は GCP プロジェクト ID です。docker run gcr.io/[PROJECT_ID]/quickstart-image
出力は次のようになります。
Hello, world! The time is Fri Feb 2 16:09:54 UTC 2018.
クリーンアップ
このチュートリアルで使用したリソースについて GCP アカウントに課金されないようにするために、以下を行ってください。
Google Cloud Platform Console で [Container Registry] ページを開きます。
プロジェクトを選択し、[開く] をクリックします。
[quickstart-image] をクリックします。
すべてのイメージを選択して、[削除] をクリックします。
このクイックスタートで作成したイメージの削除は完了です。
これでクイックスタートの演習はすべて終了です。
次のステップ
- 基本的なビルド構成ファイルを作成する方法を学習する。
- Cloud Build の概要を確認する。
- Cloud Build REST API について調べる。