Skip to main content

第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を準備する🧰☁️

コンソールでやること🖱️

  1. プロジェクト作成(+課金アカウント紐付け)💳

  2. Cloud RunArtifact Registry を有効化✅

ここで詰まりがちなのは「課金が無いと作れない系」😵💦(エラーが出たらまず課金を疑う!)


2) Artifact Registry:イメージ置き場を作る🏪📦

Cloud Runは Artifact Registryのイメージをそのまま使えるよ🙌 (他レジストリもいけるけど、最短ならここがラク) (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😵‍💫➡️😆(最短デプロイ編)

  1. 「起動したのにアクセスできない」 → まず「非公開のまま」じゃない?(Cloud Runはデフォルト非公開)🔒 (Google Cloud Documentation)

  2. 「403/401」 → 公開したいなら --allow-unauthenticated(or コンソールでAllow public access)🌍 (Google Cloud Documentation)

  3. 「コンテナが起動即落ち」PORT を読んでない / 0.0.0.0 でlistenしてない疑い🔌 (Google Cloud Documentation)

  4. 「イメージが見つからない / pull権限が無い」 → Artifact RegistryとCloud Runの権限(Reader等)を確認🧾 (Google Cloud Documentation)

  5. 「レジストリpushが通らない」gcloud auth configure-docker をやり直す🔐 (Google Cloud Documentation)

  6. 「どのURLを叩けばいい?」gcloud run services describe ... value(status.url) で取る🌍 (Google Cloud Documentation)

  7. 「公開URLが毎回変わる?」 → Cloud RunのURLの考え方がある(サービスURLの説明)📌 (Google Cloud Documentation)

  8. 「コンソールでどこから作るの?」 → Services → Deploy container(手順の導線あり)🖱️ (Google Cloud Documentation)

  9. 「IAMの公開設定が組織ポリシーで禁止」 → allUsers付与が制限されるケースがある(ドキュメント注意書き)⚠️ (Google Cloud Documentation)

  10. 「え、Cloud Runってpullしないの?」 → デプロイ時に取り込んだイメージのコピーを使う仕組みだよ📦 (Google Cloud Documentation)


Copilot/Codexに投げる“勝ちプロンプト”集🤖✨

  • 「Cloud Runで動くように、Expressのlistenを process.env.PORT0.0.0.0 前提に直して。差分パッチで」🔌
  • 「Cloud Run用に、起動ログとリクエスト1行ログを最小で入れて」📜
  • 「この環境変数一覧から、本番で必須・任意を分類して、Cloud Runの --set-env-vars 形式に整形して」🧩
  • gcloud run deploy のコマンドを、リージョンとイメージURLと公開設定込みで作って」🚀

この章のミニ課題🎒✅

  1. Cloud Runにデプロイして URLが出る🎉
  2. curl で叩いて レスポンスが返る🎯
  3. Cloud Runのログで リクエストが記録されてる👀📜

次章へのつなぎ🧭

次は「スケールと同時実行」で、料金💰と性能📈の調整ツマミを触っていくよ!(第26章)😆