FastAPI チュートリアルの Docker 環境構築

に公開

ディレクトリ構成

fastapi-tutorial/
├── app/
│   └── main.py
├── requirements.txt
├── Dockerfile
└── compose.yaml

main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

requirements.txt

fastapi
uvicorn[standard]

Dockerfile

FROM python:3.12-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY ./app ./app

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

compose.yaml

services:
  fastapi:
    build: .
    container_name: fastapi_tutorial
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app/app

実行方法

ビルド

docker compose build

起動

docker compose up

ブラウザで確認

Discussion