🐳 FastAPI × Docker × Cloud Run

コマンドリファレンス

FastAPI・Docker・Cloud Run でよく使うコマンド、エラー対処、用語集をまとめました。

🐍 Python / uv

コマンド説明
uv init新しいPythonプロジェクトを初期化
uv add fastapiパッケージを追加(pip install に相当)
uv add --dev pytest開発依存パッケージを追加
uv run fastapi dev app/main.pyFastAPI開発サーバーを起動(ホットリロードあり)
uv run pytest tests/ -vテストを実行
uv synclockファイルから依存関係をインストール

🐳 Docker

コマンド説明
docker build -t <name>:<tag> .Dockerfileからイメージをビルド
docker run --rm -p 8080:8080 <image>コンテナを起動(終了時に自動削除)
docker imagesローカルのイメージ一覧を表示
docker ps実行中のコンテナを表示
docker logs -f <container>コンテナのログをリアルタイムで表示
docker stop <container>コンテナを停止
docker rm <container>コンテナを削除
docker rmi <image>イメージを削除
docker tag <src> <dst>イメージにタグを付ける(Artifact Registry用のURLに変換)
docker push <image-url>Artifact Registryにイメージをプッシュ

☁️ gcloud CLI

コマンド説明
gcloud initgcloudの初期設定(認証・プロジェクト設定)
gcloud config set project <id>デフォルトプロジェクトを設定
gcloud config list現在の設定を表示
gcloud services enable run.googleapis.comCloud Run APIを有効化
gcloud auth configure-docker <region>-docker.pkg.devDocker認証をArtifact Registry用に設定
gcloud artifacts repositories create <name> --repository-format=docker --location=<region>Artifact Registryリポジトリを作成

🚀 Cloud Run デプロイ

コマンド説明
gcloud run deploy <service> --image <url> --region <region> --allow-unauthenticatedCloud Runにサービスをデプロイ
gcloud run services list --region <region>サービス一覧を表示
gcloud run services describe <service> --region <region>サービスの詳細を表示
gcloud run services update <service> --set-env-vars KEY=VALUE環境変数を設定
gcloud run services update <service> --min-instances 1最小インスタンス数を設定(コールドスタート対策)
gcloud run revisions list --service <service> --region <region>リビジョン一覧を表示
gcloud run services update-traffic <service> --to-latestトラフィックを最新リビジョンへ切り替え

📋 Cloud Run ログ

コマンド説明
gcloud logging read 'resource.type=cloud_run_revision AND resource.labels.service_name=<service>' --limit=50Cloud Runのログを取得
gcloud logging read 'resource.type=cloud_run_revision AND severity>=ERROR' --limit=20エラーログだけ取得

🔐 Secret Manager

コマンド説明
echo -n 'my-secret' | gcloud secrets create <name> --data-file=-シークレットを作成
gcloud secrets versions list <name>シークレットのバージョン一覧
gcloud run services update <service> --set-secrets KEY=<secret-name>:latestCloud RunにSecret Managerのシークレットをマウント

⚠️ Cloud Run エラー対処

503Service Unavailable

よくある原因

  • コンテナが起動に失敗した
  • PORT環境変数を参照していない
  • --host 0.0.0.0 でリッスンしていない
  • メモリ不足でOOMKilled

対処方法

ログを確認してエラーを特定する。PORT/0.0.0.0を確認する。

404Not Found

よくある原因

  • URLパスが間違っている
  • FastAPIにルートが定義されていない

対処方法

/docs でルート一覧を確認する。

403Forbidden

よくある原因

  • --allow-unauthenticated が設定されていない
  • IAMポリシーが不足

対処方法

allUsers に roles/run.invoker を付与する。

📖 用語集

コンテナ
アプリとその依存関係をまとめた軽量な実行環境。DockerがOSから分離して実行する。
イメージ
コンテナの「型紙」。Dockerfileからビルドされ、どこでも同じ環境を再現できる。
Artifact Registry
Google Cloud のコンテナイメージ(Dockerイメージ)保管サービス。Cloud Runのデプロイ元として使う。
リビジョン
Cloud Runでサービスを更新するたびに作られる不変のスナップショット。ロールバックやトラフィック分割に使う。
コールドスタート
リクエストがないとCloud Runが0インスタンスに縮退し、次のリクエスト時にコンテナを起動する遅延のこと。
サービスアカウント
Cloud Runのような「人間でないもの」が使うGoogle Cloud のID。最小権限の原則で設定する。
Workload Identity Federation
GitHub ActionsなどからGoogle Cloudにサービスアカウントキーなしで認証する仕組み。OIDCベース。
Pydantic
Pythonの型注釈から自動的にバリデーション・シリアライゼーションを行うライブラリ。FastAPIの中核。
依存性注入 (Depends)
FastAPIで共通処理(DB接続、認証チェックなど)をDependsを使って各エンドポイントに渡す仕組み。
マルチステージビルド
Dockerfileで複数のFROM命令を使い、ビルド用と実行用でコンテナを分けることでイメージを小さくする技術。

🐳 Dockerfile チートシート

命令説明
FROMベースイメージを指定FROM python:3.12-slim
WORKDIR作業ディレクトリを設定WORKDIR /app
COPYファイルをコンテナにコピーCOPY . .
RUNビルド時にコマンドを実行RUN pip install -r requirements.txt
ENV環境変数を設定ENV PORT=8080
EXPOSEポートを公開(ドキュメント用)EXPOSE 8080
USER実行ユーザーを切り替えUSER appuser
CMDコンテナ起動時のデフォルトコマンドCMD ["uvicorn", "app.main:app"]