mcpField
G
gcp-deploy

gcp-deploy

github.com/fwfuturesクラウド・DevOps060 回インストール7 週間前に更新
リポジトリ

gcp-deploy について

gcp-deployは、Dockerfileを使ったアプリをGoogle Cloud Runに公開するためのデプロイスキルです。ビルド、Artifact Registryへのイメージ登録、デプロイを行い、gcloudコマンドやスクリプトで設定できます。

主な機能

  1. 01ソースをCloud Runにデプロイ
  2. 02Cloud Buildでビルド
  3. 03Artifact Registryへのイメージ登録
  4. 04リソースと環境変数の設定
  5. 05ログとサービス情報の確認

活用シーン

  1. 01コンテナアプリのデプロイ
  2. 02環境変数やシークレットの設定
  3. 03リージョン、ポート、メモリ、スケーリングの調整
  4. 04ビルドやサービス起動の問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fwfutures/skills --skill gcp-deploy

インストール後、Claude Code で/gcp-deployを入力して読み込まれたか確認します。

同梱ファイルscripts/deploy.sh

詳細

GCP Cloud Run へのデプロイ

1つのコマンドで、ソースから Cloud Run にデプロイできます。必要なもの:GCP プロジェクト、リポジトリのルートにある Dockerfile、ポート(デフォルトは 8080/PORT 環境変数)でリッスンするアプリ。

クイックデプロイ

# 1. Auth (skip if already logged in)
gcloud auth login
gcloud config set project PROJECT_ID

# 2. Enable APIs (first time only)
gcloud services enable run.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com

# 3. Deploy
gcloud run deploy SERVICE_NAME \
  --source . \
  --region australia-southeast1 \
  --allow-unauthenticated

Cloud Build でコンテナをリモートでビルドし、Artifact Registry にプッシュして Cloud Run にデプロイし、公開 HTTPS URL を返します。同じコマンドを再実行すると再デプロイできます。

デプロイスクリプト

1コマンドでデプロイするには、scripts/deploy.sh をプロジェクトのルートにコピーします。

chmod +x deploy.sh
./deploy.sh my-service

環境変数:GCP_REGION(デフォルト:australia-southeast1)、GCP_PROJECT(デフォルト:現在の gcloud プロジェクト)。

よく使うフラグ

フラグ用途例
--regionデプロイ先リージョンaustralia-southeast1
--allow-unauthenticatedパブリックアクセス
--portコンテナのポート(8080 以外の場合)--port 3000
--set-env-vars環境変数--set-env-vars KEY=val,FOO=bar
--set-secretsSecret Manager のシークレット--set-secrets ENV=SECRET:latest
--memoryメモリ--memory 512Mi
--cpuCPU--cpu 1
--min-instances最小インスタンス数(0 = ゼロまでスケール)--min-instances 0
--max-instances最大インスタンス数--max-instances 3
--timeoutリクエストのタイムアウト(最大 3600)--timeout 300

環境変数とシークレット

インラインの環境変数:

gcloud run deploy SERVICE --source . --region REGION --allow-unauthenticated \
  --set-env-vars "DATABASE_URL=postgres://...,API_KEY=abc123"

Secret Manager(機密情報に推奨):

# Create secret
echo -n "secret-value" | gcloud secrets create MY_SECRET --data-file=-

# Grant access to default compute SA
gcloud secrets add-iam-policy-binding MY_SECRET \
  --member="serviceAccount:$(gcloud iam service-accounts list --format='value(email)' --filter='displayName:Compute Engine default')" \
  --role="roles/secretmanager.secretAccessor"

# Deploy with secret
gcloud run deploy SERVICE --source . --region REGION --allow-unauthenticated \
  --set-secrets "MY_SECRET=MY_SECRET:latest"

便利なコマンド

# Stream logs
gcloud run services logs tail SERVICE --region REGION

# List services
gcloud run services list --region REGION

# Get service URL
gcloud run services describe SERVICE --region REGION --format "value(status.url)"

# Delete service
gcloud run services delete SERVICE --region REGION

CI/ヘッドレス認証

gcloud auth activate-service-account --key-file=key.json
gcloud config set project PROJECT_ID

トラブルシューティング

問題解決方法
ビルドに失敗するDockerfile をローカルで確認します:docker build .
デプロイ時に 403 が発生するroles/run.admin と roles/cloudbuild.builds.editor が必要です
アプリの起動時にクラッシュするログを確認します:gcloud run services logs tail SERVICE --region REGION
ポートが一致しないアプリに合わせて --port を設定するか、アプリで PORT 環境変数を読み取ります
コールドスタートが遅い--min-instances 1 を設定します(インスタンスが起動状態に保たれますが、費用が増加します)
長時間のリクエストがタイムアウトする--timeout 300 で延長します(最大 3600s)

コメント