⚡
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
ブラウザで確認
- API: http://localhost:8000
- ドキュメント: http://localhost:8000/docs
- Redoc: http://localhost:8000/redoc
Discussion