実務でGoogleCloudにデプロイ済みのサービスを修正して再デプロイする手段が全くわからん!だったので、調べてまとめました。
1. コードの取得
# イメージをプル
docker pull gcr.io/your-project-id/your-backend-service:latest
# 一時コンテナを作成してコードをコピー
docker create --name temp-backend gcr.io/your-project-id/your-backend-service:latest
mkdir -p ./backend-src
docker cp temp-backend:/app ./backend-src/app
docker rm temp-backend
# コピーしたファイルの確認
ls -la ./backend-src/app
2. Dockerfileの作成
# backend-srcディレクトリに移動
cd ./backend-src
# Dockerfileを作成
cat > Dockerfile << 'EOF'
FROM gcr.io/your-project-id/your-backend-service:latest
COPY ./app /app
EOF
3. コードの修正
# エディタでコードを開く
cloudshell edit ./backend-src/app/main.py
# または
cloudshell edit ./backend-src/app
4. イメージのビルドとプッシュ
# backend-srcディレクトリにいることを確認
cd ./backend-src
# イメージをビルド
docker build -t gcr.io/your-project-id/your-backend-service:updated .
# ビルドしたイメージをGCRにプッシュ
docker push gcr.io/your-project-id/your-backend-service:updated
5.Cloud Runサービスの更新
# サービスを新しいイメージで更新
gcloud run services update your-backend-service \
--image gcr.io/your-project-id/your-backend-service:updated \
--region asia-northeast1
6.デプロイの確認
# サービスの状態を確認
gcloud run services describe your-backend-service --region asia-northeast1
# 最新のリビジョン情報を確認
gcloud run revisions list --service=your-backend-service --region asia-northeast1 --limit=1
# ログを確認
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=your-backend-service" --limit=10
今回は少ない修正だったのでひとまずCloud Shell上で行いましたが、デバックのしやすさを踏まえると、ローカルに落としてやる方法の方が良さそうな気がしますね。。
また模索していきたいと思います!