Cloud Build を使用して Docker イメージのビルドし、pushする

Docker イメージをビルドし、そのイメージを Artifact Registry に push して、Cloud Build の使用を開始する方法を学習します。Artifact Registry では、プライベート・パッケージと Docker コンテナ イメージを管理する単一の場所が準備されています。

まず、Docker 構成ファイルの Dockerfile を使用してイメージをビルドし、次に Cloud Build 構成ファイルを使用して同じイメージをビルドします。


このタスクを Cloud Shell エディタで直接行う際のガイダンスについては、「ガイドを表示」をクリックしてください。

ガイドを表示


始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Cloud Build and Artifact Registry API を有効にします。

    API を有効にする

  5. Google Cloud CLI をインストールします。
  6. gcloud CLI を初期化するには:

    gcloud init
  7. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  8. Google Cloud プロジェクトで課金が有効になっていることを確認します

  9. Cloud Build and Artifact Registry API を有効にします。

    API を有効にする

  10. Google Cloud CLI をインストールします。
  11. gcloud CLI を初期化するには:

    gcloud init

ビルドするソースファイルを準備する

コンテナ イメージにパッケージ化するには、サンプルのソースコードが必要です。このセクションでは、簡単なシェル スクリプトと Dockerfile を作成します。Dockerfile は、Docker がイメージを作成するための指示を含むテキスト ドキュメントです。

  1. ターミナル ウィンドウを開きます。

  2. quickstart-docker という名前で新しいディレクトリを作成し、そのディレクトリに移動します。

    mkdir quickstart-docker
    cd quickstart-docker
    
  3. 次の内容のファイルを quickstart.sh という名前で作成します。

    echo "Hello, world! The time is $(date)."
  4. 次の内容のファイルを Dockerfile という名前で作成します。

    FROM alpine
    COPY quickstart.sh /
    CMD ["/quickstart.sh"]
  5. ターミナル ウィンドウで次のコマンドを実行して、quickstart.sh を実行可能にします。

    chmod +x quickstart.sh
    

Artifact Registry で Docker リポジトリを作成する

  1. ロケーション us-west2quickstart-docker-repo という名前の Docker リポジトリを作成し、「Docker repository」という説明を指定します。

    gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
        --location=us-west2 --description="Docker repository"
    
  2. リポジトリが作成されたことを確認します。

    gcloud artifacts repositories list
    

    表示されたリポジトリのリストに quickstart-docker-repo が表示されます。

Dockerfile を使用してイメージをビルドする

Cloud Build で、Docker イメージを Dockerfile を使用してビルドできます。個別の Cloud Build 構成ファイルは不要です。

Dockerfile を使用してビルドするには:

  1. 次のコマンドを実行して、Google Cloud プロジェクト ID を取得します。

    gcloud config get-value project
    
  2. quickstart.shDockerfile が存在するディレクトリから次のコマンドを実行します。

    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 に指示します。

  1. quickstart.shDockerfile があるディレクトリに、cloudbuild.yaml という名前のファイルを作成します。このファイルには以下を含めます。このファイルがビルド構成ファイルです。ビルド時に、Cloud Build が自動的に $PROJECT_ID をプロジェクト ID に置き換えます。

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      script: |
        docker build -t us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1 .
      automapSubstitutions: true
    images:
    - 'us-west2-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
  2. 次のコマンドを実行してビルドを開始します。

    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 しました。

ビルドの詳細を表示

  1. Google Cloud Console で Cloud Build ページを開きます。

    Cloud Build ページを開く

  2. プロジェクトを選択し、[開く] をクリックします。

    [ビルド履歴] ページが表示されます。

    ビルド履歴ページのスクリーンショット

  3. [リージョン] プルダウン メニューで、us-west2 を選択して、そのリージョンのビルドを表示します。

  4. 特定のビルドをクリックします。

    [ビルドの詳細] ページが表示されます。

  5. ビルドのアーティファクトを表示するには、[ビルドの概要] で [ビルド アーティファクト] をクリックします。

    出力は次のようになります。

    ビルド アーティファクトのスクリーンショット

    このページから、ビルドログをダウンロードして、Artifact Registry でイメージの詳細を表示できます。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. Google Cloud Console で Artifact Registry ページを開きます。

    Artifact Registry ページを開きます。

  2. プロジェクトを選択し、[開く] をクリックします。

  3. [quickstart-docker-repo] を選択します。

  4. [削除] をクリックします。

このクイックスタートで作成したリポジトリの削除は完了です。

次のステップ