くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

DockerイメージをGCPのCloud Buildでリモートビルド&Artifact Registryにpush

Buildpackのpack CLIを使ってローカルビルドができたので、
GCPのCloud Buildを使ってリモートでビルドしてみる。

Artifact Registryの作成

Cloud Buildを利用するとDockerイメージは、
Artifact Registryにpushされるので、
まずはコンテナのリポジトリを作成する。

GCPの管理画面から作成すればOK

  • 形式: Docker
  • モード: 標準
  • ロケーションタイプ: リージョン
    • リージョン: asia-northeast1(東京)
  • 暗号化: Googleが管理する暗号鍵
  • クリーンアップポリシー: アーティファクトを削除
    • ポリシータイプ: 最新バージョンを保持
    • 保持数: 3

リージョンやクリーンアップポリシーはお好みで。

作成すると、こんな形式のパスで作成される。

<REGION>-docker.pkg.dev/<PROJECT_ID>/<REPOSITORY_NAME>

例) asia-northeast1-docker.pkg.dev/my-project/my-repository

Cloud Buildでビルドする

ビルド/デプロイするソースは、前回と同様でこんな感じ。

src/
  index.js
  package.json
// package.json
{
  "node": "20",
  "scripts": {
    "start": "node ./index.js"
  }
}

あとは、gcloud buildsコマンドを実行すればOK

#!/bin/bash

REGION="asia-northeast1"
PROJECT_ID="my-project"
REPO_NAME="my-repository"
IMAGE_NAME="my-docker-image"

SRC_DIR="./src"

gcloud builds submit ${SRC_DIR} \
  --pack image=${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME} \
  --project=${PROJECT_ID}

公式ドキュメントではこのあたり。

Artifact RegistryのDockerイメージを利用する

公式ドキュメントではこのあたり

Artifact Registryは非公開のため、 認証が必要なので、設定を追加する必要がある。

# gcloud認証情報ヘルパーを使った認証方法を設定
gcloud auth configure-docker asia-northeast1-docker.pkg.dev

あとは、docker pullをすればOK

# Dockerイメージのpull
docker pull asia-northeast1-docker.pkg.dev/my-project/my-repository/my-docker-image:latest

# Dockerイメージの実行
docker run --rm asia-northeast1-docker.pkg.dev/my-project/my-repository/my-docker-image:latest

以上!! Cloud RunじゃなくてもArtifact Registryを使えるようになった(*´ω`*)