この記事は広告を含みます。
- FastAPIとは?
- Dockerとは?
- 基本概念
- 環境構築
- FastAPIのセットアップ
- Dockerファイルの作成
- コンテナのビルドと実行
- 開発環境でのホットリロード
- 外部からのアクセスとデバッグ
- まとめ
FastAPIとは?
FastAPIは、Pythonで書かれたWebフレームワークで、以下のような特徴を持っています。
- 非同期処理に対応: 高速な処理が可能
- 型ヒントを活用: 自動補完やバリデーションが強力
- Swagger UIを自動生成: APIの可視化が簡単
Flaskと比べてパフォーマンスが良く、モダンな開発に適しています。。
Dockerとは?
Dockerは、アプリケーションをコンテナとして管理するツールです。
基本概念
- コンテナ: 軽量な仮想環境
- イメージ: コンテナのテンプレート
- Dockerfile: イメージの構築手順を定義するファイル
FastAPIの開発では、環境の統一とデプロイの容易さからDockerを使うと便利です。。
ダウンロード
インストール
WSLを手動でアップデート
wsl --update --web-download
完了
※ログインはGoogleアカウントでログインをしました。
環境構築
必要なツール
- Docker: コンテナを動かすため
- Python 3.14+: FastAPIの実行環境
プロジェクトのディレクトリ構成
fastapi-docker/ ├── app/ │ ├── main.py # FastAPIのエントリーポイント │ ├── requirements.txt # 依存関係 ├── Dockerfile # Dockerの設定 ├── docker-compose.yml # コンテナの管理
FastAPIのセットアップ
main.py
の作成
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"message": "Hello, FastAPI with Docker!"}
requirements.txt
の準備
fastapi uvicorn
Dockerファイルの作成
Dockerfile
FROM python:3.13 WORKDIR /app COPY ./app/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
docker-compose.yml
version: '3.8' services: fastapi: build: . ports: - "8000:8000" volumes: - .:/app environment: - ENV=development
コンテナのビルドと実行
イメージのビルド
docker build -t fastapi-app .
イメージが大きいですね。。。スリム化が課題です。
コンテナの起動
docker run -d -p 8000:8000 fastapi-app
または、docker-compose
を使うと簡単です。
docker-compose up -d
開発環境でのホットリロード
Dockerfile
の CMD を以下のように変更すると、コードの変更を即座に反映できます。
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
外部からのアクセスとデバッグ
アクセス方法
ブラウザまたは curl
コマンドで確認できます。
curl http://localhost:8000
また、Swagger UI でAPIの動作確認ができます。
http://localhost:8000/docs
ログの確認
docker logs {コンテナ名}
Docker Desktopからでも
まとめ
Dockerを使うメリット
- 環境構築の手間を削減
- 本番環境と開発環境の差異を最小限に
- チーム開発でも同じ環境を共有可能
次のステップ
- データベースとの連携 (DynamoDB)
- クラウドデプロイ (AWS)
- CORSの設定 (フロントエンドと連携)