🐙
GCRでコンテナのビルド・アップロードをGoogle Artifact Registry(GAR)で置き換える作成手順
移行経緯
- 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)の作成
- GCRと最も異なるのがリポジトリをGAR上に作成してコンテナイメージをプッシュする作業が増えること
- GARのURLはこちら:https://console.cloud.google.com/artifacts/browse/[PROJECT_ID]?project=[PROJECT_ID]&authuser=1
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