第25章:Cloud Run “最短デプロイ回”:まず公開して勝つ 🏁
この章は「すでにコンテナ化できてるNode/TSアプリ」を、Cloud RunでURL公開まで一気に持っていく回だよ😆✨ Cloud Runは「指定したコンテナイメージをデプロイするだけ」でサービスになるのが強み!しかもデプロイ時にCloud Run側がイメージを取り込んで保持する仕組みだから、起動のたびにレジストリから毎回pullされる前提で考えなくてOK🙆♂️📦 (Google Cloud Documentation)
この章のゴール🎯
- Cloud Runに新しいサービスを作って公開URLを得る🌍
- 環境変数を渡して動かす🧩
- ログを見て「動いてる!」を確認する👀📜
0) まず“Cloud Runの約束事”だけ押さえる🤝🧠
ポートはここが重要!🔌
Cloud Runはコンテナに PORT 環境変数を渡してくるよ。HTTPサーバは そのPORTで待ち受けする必要がある(例:8080)📌 (Google Cloud Documentation)
つまりアプリ側は「
process.env.PORTを読む」&「0.0.0.0でlisten」が基本(第6章の復習だね)😉
1) Google Cloud側:プロジェクトとAPIを準備する🧰☁️
コンソールでやること🖱️
-
プロジェクト作成(+課金アカウント紐付け)💳
-
Cloud Run と Artifact Registry を有効化✅
- 画面操作で有効化する流れの例(API Library → Enable) (Google Cloud Documentation)
- Artifact Registryの有効化について (Google Cloud Documentation)
ここで詰まりがちなのは「課金が無いと作れない系」😵💦(エラーが出たらまず課金を疑う!)
2) Artifact Registry:イメージ置き場を作る🏪📦
Cloud Runは Artifact Registryのイメージをそのまま使えるよ🙌 (他レジストリもいけるけど、最短ならここがラク) (Google Cloud Documentation)
置き場(リポジトリ)を作る
- コンソールで作る手順(Repositories → Create) (Google Cloud Documentation)
- 「Docker形式」「Standard」「リージョン」を選ぶのが基本✨ (Google Cloud Documentation)
3) ローカルからpush:最短でイメージを置く📤🐳
3-1. Docker認証を通す🔐
Artifact Registryへpushするには、DockerがGoogle認証で喋れる必要があるよ。
gcloud auth login
gcloud auth configure-docker <REGION>-docker.pkg.dev
gcloud auth configure-docker はDocker設定を更新して認証できるようにするコマンドだよ🧩 (Google Cloud Documentation)
3-2. タグ付け→push🏷️➡️📦
Artifact RegistryのイメージURLはこの形👇(覚えゲー!)
LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE:TAG (Google Cloud Documentation)
例(雰囲気):
docker tag myapp:local <REGION>-docker.pkg.dev/<PROJECT_ID>/<REPO_NAME>/myapp:v1
docker push <REGION>-docker.pkg.dev/<PROJECT_ID>/<REPO_NAME>/myapp:v1
push/pull手順の公式ガイドもここにまとまってるよ📚 (Google Cloud Documentation)
4) Cloud Runにデプロイ!🚀🌐(最短ルート)
Cloud Runはデフォルトで「非公開」(認証必須)になってるよ。公開したい場合は設定が必要🔒→🌍 (Google Cloud Documentation)
4-1. gcloudで一発デプロイ(おすすめ)⚡
gcloud run deploy <SERVICE_NAME> `
--image <REGION>-docker.pkg.dev/<PROJECT_ID>/<REPO_NAME>/myapp:v1 `
--region <REGION> `
--allow-unauthenticated
--allow-unauthenticatedを付けると「公開サービス」になる(public API/website向け)🌍 (Google Cloud Documentation)- もし付けないと、実行時に公開するか確認を求められる動きになるよ📝 (Google Cloud Documentation)
「公開したくない」なら
--no-allow-unauthenticatedで明示的に閉じるのもアリ🔒 (Google Cloud Documentation)
4-2. 公開設定を後から変える(コンソール派向け)🖱️
「Security」タブで Allow public access にできるよ。手順の流れはこれ👇 (Google Cloud Documentation)
4-3. 環境変数を渡す(最低限だけ)🧩
例:APIの動作モードや外部URLなど
gcloud run deploy <SERVICE_NAME> `
--image <IMAGE_URL> `
--region <REGION> `
--allow-unauthenticated `
--set-env-vars NODE_ENV=production,APP_ENV=prod
※Cloud Runはコンテナへ環境変数を渡せる(PORT もそのひとつ)🔌 (Google Cloud Documentation)
5) 動作確認:URLを取り出して叩く🧪✅
5-1. サービスURLを取得する🔎
gcloud run services describe <SERVICE_NAME> --region <REGION> --format "value(status.url)"
この形でURLが取れるよ🌍 (Google Cloud Documentation)
5-2. 叩く(curl)🎯
curl "<URL>/healthz"
(/healthz は第15章で作った想定。無ければトップや適当なAPIでOK!)
6) ログを見る:Cloud Runの“目”を手に入れる👀📜
- Cloud Runは「stdout/stderrに出たログ」を基本の観測軸にしやすい構造になってるよ(運用の入口!)
- コンソールのCloud Runサービス画面からログを見て、「リクエスト来た?」を確認しよう👣
※ローカルでCloud Runサービスをテストする話(環境変数 K_REVISION など)も公式にまとまってるよ🧪 (Google Cloud Documentation)
つまずきTop10😵💫➡️😆(最短デプロイ編)
-
「起動したのにアクセスできない」 → まず「非公開のまま」じゃない?(Cloud Runはデフォルト非公開)🔒 (Google Cloud Documentation)
-
「403/401」 → 公開したいなら
--allow-unauthenticated(or コンソールでAllow public access)🌍 (Google Cloud Documentation) -
「コンテナが起動即落ち」 →
PORTを読んでない /0.0.0.0でlistenしてない疑い🔌 (Google Cloud Documentation) -
「イメージが見つからない / pull権限が無い」 → Artifact RegistryとCloud Runの権限(Reader等)を確認🧾 (Google Cloud Documentation)
-
「レジストリpushが通らない」 →
gcloud auth configure-dockerをやり直す🔐 (Google Cloud Documentation) -
「どのURLを叩けばいい?」 →
gcloud run services describe ... value(status.url)で取る🌍 (Google Cloud Documentation) -
「公開URLが毎回変わる?」 → Cloud RunのURLの考え方がある(サービスURLの説明)📌 (Google Cloud Documentation)
-
「コンソールでどこから作るの?」 → Services → Deploy container(手順の導線あり)🖱️ (Google Cloud Documentation)
-
「IAMの公開設定が組織ポリシーで禁止」 → allUsers付与が制限されるケースがある(ドキュメント注意書き)⚠️ (Google Cloud Documentation)
-
「え、Cloud Runってpullしないの?」 → デプロイ時に取り込んだイメージのコピーを使う仕組みだよ📦 (Google Cloud Documentation)
Copilot/Codexに投げる“勝ちプロンプト”集🤖✨
- 「Cloud Runで動くように、Expressのlistenを
process.env.PORTと0.0.0.0前提に直して。差分パッチで」🔌 - 「Cloud Run用に、起動ログとリクエスト1行ログを最小で入れて」📜
- 「この環境変数一覧から、本番で必須・任意を分類して、Cloud Runの
--set-env-vars形式に整形して」🧩 - 「
gcloud run deployのコマンドを、リージョンとイメージURLと公開設定込みで作って」🚀
この章のミニ課題🎒✅
- Cloud Runにデプロイして URLが出る🎉
curlで叩いて レスポンスが返る🎯- Cloud Runのログで リクエストが記録されてる👀📜
次章へのつなぎ🧭
次は「スケールと同時実行」で、料金💰と性能📈の調整ツマミを触っていくよ!(第26章)😆