🐃
【Hello World⑨】Fast API @ Python
FastAPIでPythonのAPIを作ります
Windows11のDocker環境上で
Python言語のフレームワーク「FastAPI」を使ってAPIを作ります。
HTTPのリクエストをFastAPIに渡すインタフェースには「uvicorn」を使います。
環境
Windows 11 Pro 23H2
WLS 2.1.5.0(Ubuntu 22.04.1 LTS)
Docker Desktop 4.29.0
Visual Studio Code
①フォルダ・ファイルを作成
以下の構成でフォルダとファイルを作ります。
フォルダ構成
fastapi
├─app
│ ├─main.py # FastAPIのアプリ
│ └─__init__.py # 空のファイル
├─compose.yaml # コンテナ作成時の指示を記載したファイル
└─Dockerfile # イメージ作成時の指示を記載したファイル
以下のコマンドでフォルダ・ファイルを作成します。
PowerShell
mkdir fastapi ; `
cd fastapi ; `
mkdir app ; `
New-Item Dockerfile ; `
New-Item compose.yaml ; `
New-Item app/main.py ; `
New-Item app/__init__.py ; `
code Dockerfile ; `
code compose.yaml ; `
code app/main.py
各ファイルは以下の内容で作成します。
compose.yaml
services:
api:
build: .
container_name : fastapi
working_dir : /app
command : uvicorn main:app --reload --host 0.0.0.0 --port 8000
ports:
- "8000:8000"
volumes:
- ./app:/app
Dockerfile
FROM python:3.12
RUN pip install --upgrade pip \
&& pip install fastapi==0.103.2 pydantic==2.5.2 uvicorn==0.23.2
main.py
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
app = FastAPI()
@app.get("/", response_class=HTMLResponse)
async def read_items():
return """<h1 style='text-align:center;'>Hello World FastAPI on Docker!</h1>"""
②FastAPIのコンテナを起動
以下のコマンドを実行し、FastAPIのコンテナを起動します。
PowerShell
docker compose up -d
③Hello Worldが表示されることを確認
Webブラウザでhttp://localhost:8000に接続して、Hello Worldが表示されることを確認します。
④ドキュメントを表示(Swagger-ui/ReDoc)
Webブラウザでhttp://localhost:8000/docsに接続してSwagger-uiが表示されることを確認します。
Webブラウザでhttp://localhost:8000/redocに接続してReDocのドキュメントが表示されることを確認します。
Discussion