FastAPI アプリケーションを Nuitka でコンパイルし、Docker イメージとして配布する最小構成サンプルです。
FastAPI+uvicorn- OpenAPI (
/docs,/redoc,/openapi.json) 自動提供 - Nuitka による Python -> バイナリ化 (standalone ディレクトリ)
- マルチステージ Docker ビルド
| Method | Path | 説明 |
|---|---|---|
| GET | / |
ルート メッセージ |
| GET | /healthz |
ヘルスチェック |
| POST | /items |
アイテム登録 (JSON) |
| GET | /items/{item_id} |
アイテム取得 |
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000ブラウザで: http://127.0.0.1:8000/docs
pytest -qbash build_nuitka.sh
ls dist/run_server.distrun_server.dist/run_server.bin が生成されます (実行ファイル名は環境で変わる場合あり)。
build_nuitka.sh では --include-package=app を指定し FastAPI アプリ本体が取り込まれるようにしています。
docker build -t fastapi-nuitka:latest .
docker run --rm -p 8000:8000 fastapi-nuitka:latestアクセス: http://127.0.0.1:8000/healthz
make docker-build
make docker-run
make nuitka
make testNuitka で CPython バイトコードを含まない形に近づきますが、完全な難読化や逆コンパイル耐性を保証するものではありません。高度な秘匿が必要な場合は追加的なレイヤ (ライセンス検証、サーバ側秘匿など) を検討してください。
- Alembic + DB 追加
- 認証 (JWT / OAuth2) 追加
- CI/CD (GitHub Actions) で自動ビルド
- Onefile オプション評価 (起動時間/サイズ要検証)
本リポジトリは MIT License を基にした改変ライセンス (追加 Attribution 条項) を採用しています。LICENSE を参照し、再配布時には以下を保持してください:
- 著作権表示 (著者名:
<YOUR_NAME>を差し替え) - 元リポジトリ URL:
<ORIGINAL_REPOSITORY_URL>を差し替え - Attribution セクション全文
派生物は README 等で改変を明記してください。