FastAPI × Docker × Cloud Run
実践ハンズオン学習
Pythonで REST API を作り、Dockerでコンテナ化して、 Google Cloud Run へデプロイするまでを、手を動かしながら学ぶ日本語チュートリアルです。
3つの技術の役割
FastAPI
- •Python型ヒントで自動バリデーション
- •OpenAPI/Swagger自動生成
- •async/awaitで高速処理
Docker
- •どこでも同じ環境を再現
- •依存関係をまとめてパッケージング
- •イメージをそのままデプロイ
Cloud Run
- •サーバー管理不要のフルマネージド
- •リクエスト数に応じて自動スケール
- •HTTPS・ドメイン自動設定
デプロイの流れ
学習コース
全 13 章・上から順番に進めましょう
なぜ FastAPI + Docker + Cloud Run か
初級約15分FastAPI、Docker、Cloud Run それぞれの役割と、なぜこの組み合わせが現代のAPI開発に最適なのかを理解する
ローカル環境の構築
初級約30分Python、uv、Docker、gcloud をインストールし、Google Cloud の初期設定を行う
FastAPI 入門
初級約45分ルーティング、Pydantic モデル、依存性注入、async/await、自動ドキュメント生成を実際にコードを書いて学ぶ
pytest でAPIをテストする
初級約30分pytest と httpx を使って FastAPI アプリのテストを書き、CI でも通る自動テストを実装する
Docker入門: イメージとコンテナの基本操作
初級約30分Docker の根本概念「イメージ」と「コンテナ」の違いを理解し、docker run・ps・logs・stop・rm などの基本コマンドを習得する。hello-world と Nginx を動かしてポート公開を体験する
Dockerfile入門: FastAPIをコンテナ化する
初級約35分FROM・WORKDIR・COPY・RUN・CMD の各命令を学び、FastAPI アプリを Dockerfile で単体コンテナ化する。ビルドコンテキストとポート公開の仕組みも理解する
Dockerfile改善: キャッシュ・マルチステージ・セキュリティ
中級約35分.dockerignore でビルドコンテキストを削減し、レイヤキャッシュを活かす命令順序を学ぶ。マルチステージビルドで小さいイメージを作り、non-root ユーザーでセキュリティを高める
ComposeとDB: FastAPI + Postgres を一発起動する
中級約45分compose.yaml でサービス間通信・環境変数・depends_on・healthcheck・volume を設定し、docker compose up -d --build で FastAPI と Postgres を同時に起動する。volume による DB 永続化も確認する
Dockerトラブルシュート集: 詰まったときの調べ方
中級約30分docker compose ps / logs / exec / inspect を使ったデバッグ手順を体系化する。ポート競合・デーモン未起動・マウント権限・DB 接続失敗の典型パターンと解決策をカバーする
発展: レジストリ・タグ運用・CI/CD・セキュリティ
上級約40分Artifact Registry へのイメージ push、タグ運用の考え方、CI/CD との接続、Rootless Docker、Docker Scout によるイメージスキャンを紹介する発展編
Cloud Run へのデプロイ
中級約45分Artifact Registry にイメージを push し、Cloud Run サービスをデプロイする。IAM、環境変数、Secret Manager の設定も含む
運用・トラブルシュート
中級約35分Cloud Run のリビジョン管理、トラフィック制御、ログ確認、よくあるエラー (503/404/403) の対処法を学ぶ
発展: GitHub Actions で CI/CD を構築する
上級約60分GitHub Actions と Workload Identity Federation (OIDC) を使って、プッシュするだけで自動テスト・ビルド・Cloud Run デプロイが走るパイプラインを構築する
必要なツール
インストール方法は 「02 ローカル環境の構築」 で詳しく説明しています。