🐙

GCRでコンテナのビルド・アップロードをGoogle Artifact Registry(GAR)で置き換える作成手順

2023/09/29に公開

移行経緯

  • Container Registry の廃止に関するスケジュールがリリースノートで公開
  • Artifact Registry はContainer Registryと同様のコンテナホスティングサービス
  • Artifact Registry はpkg.devというドメインで提供され、使用するためのリポジトリを作成する手間が増えるのと、リポジトリレベルの権限を付与する必要性がある。
  • Artifact Registry はその代わりに、権限管理を細かく出来るメリットがある

開発環境

PC: MacBook Pro
CPU: Apple M2 Max
Memory: 32GB
macOS: Ventura 13.5.2
Docker Compose version: v2.21.0-desktop.1

gcloud CLIをインストール

1. gcloud CLIをインストール

  • GCR/GARへのDockerイメージのアップロードをCLIで行う

  • Homebrewを利用したgcloud CLIの設定を行う

    brew install google-cloud-sdk
    
  • brew install google-cloud-sdkで最後に表示されるsource以下のPATH二つを記録する

    For more information on how to get started, please visit:
      https://cloud.google.com/sdk/docs/quickstarts
    
    To install or remove components at your current SDK version [448.0.0], run:
      $ gcloud components install COMPONENT_ID
      $ gcloud components remove COMPONENT_ID
    
    To update your SDK installation to the latest version [448.0.0], run:
      $ gcloud components update
    
    ==> Source [/usr/local/share/google-cloud-sdk/completion.zsh.inc] in your profile to enable shell command completion for gcloud.
    ==> Source [/usr/local/share/google-cloud-sdk/path.zsh.inc] in your profile to add the Google Cloud SDK command line tools to your $PATH.
    ==> Linking Binary 'docker-credential-gcloud' to '/usr/local/bin/docker-credential-gcloud'
    ==> Linking Binary 'gcloud' to '/usr/local/bin/gcloud'
    ==> Linking Binary 'git-credential-gcloud.sh' to '/usr/local/bin/git-credential-gcloud'
    ==> Linking Binary 'completion.bash.inc' to '/usr/local/etc/bash_completion.d/google-cloud-sdk'
    ==> Linking Binary 'completion.zsh.inc' to '/usr/local/share/zsh/site-functions/_google_cloud_sdk'
    ==> Linking Binary 'gsutil' to '/usr/local/bin/gsutil'
    ==> Linking Binary 'anthoscli' to '/usr/local/bin/anthoscli'
    ==> Linking Binary 'bq' to '/usr/local/bin/bq'
    🍺  google-cloud-sdk was successfully installed!
    
  • PATH 2つを実行する

    source /usr/local/share/google-cloud-sdk/completion.zsh.inc
    source /usr/local/share/google-cloud-sdk/path.zsh.inc
    

2. CLIでGCPへのログイン

gcloud auth login

3. CLIにプロジェクト設定

gcloud config set project [GCP_PROJECT_ID]

4. CLIでdockerコマンドの設定を行う

gcloud auth configure-docker

Dockerイメージのビルドとアップロード

1. Google Artifact Registry(GAR)の作成

2. Dockerイメージをビルドする

  • アプリのプロジェクトルートに移動して下記のコマンドでDockerイメージのビルドを行う
  • CLIでdockerコマンドの設定を行う

GCR

docker build -t gcr.io/[GCP_PROJECT_ID]/demo-app:latest
--platform linux/amd64 -f Dockerfile.cloud .

GAR

gcloud auth configure-docker asia-northeast1-docker.pkg.dev
gcloud projects add-iam-policy-binding [GCP_PROJECT_ID] \
    --member=user:your-user-email@example.com \
    --role=roles/artifactregistry.writer

docker build -t [LOCATION]-docker.pkg.dev/[GCP_PROJECT_ID]/[REPOSITORY_NAME]/[IMAGE_NAME]:[TAG]  \
--platform linux/amd64 -f Dockerfile.cloud .

3. GARリポジトリにDockerイメージをpushする

GCR

docker push gcr.io/[GCP_PROJECT_ID]/[IMAGE_NAME]:[TAG]


GAR

docker push [LOCATION]-docker.pkg.dev/[GCP_PROJECT_ID]/[REPOSITORY_NAME]/[IMAGE_NAME]:[TAG]

Discussion