Skip to content

hateswim/FastAPI-Compile-Binary-Nuitka

 
 

Repository files navigation

FastAPI + Nuitka + Docker サンプル

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 -q

Nuitka ビルド (ローカル)

bash build_nuitka.sh
ls dist/run_server.dist

run_server.dist/run_server.bin が生成されます (実行ファイル名は環境で変わる場合あり)。 build_nuitka.sh では --include-package=app を指定し FastAPI アプリ本体が取り込まれるようにしています。

Docker ビルド & 実行

docker build -t fastapi-nuitka:latest .
docker run --rm -p 8000:8000 fastapi-nuitka:latest

アクセス: http://127.0.0.1:8000/healthz

Makefile ショートカット

make docker-build
make docker-run
make nuitka
make test

セキュリティ/難読化に関して

Nuitka で CPython バイトコードを含まない形に近づきますが、完全な難読化や逆コンパイル耐性を保証するものではありません。高度な秘匿が必要な場合は追加的なレイヤ (ライセンス検証、サーバ側秘匿など) を検討してください。

カスタマイズ案

  • Alembic + DB 追加
  • 認証 (JWT / OAuth2) 追加
  • CI/CD (GitHub Actions) で自動ビルド
  • Onefile オプション評価 (起動時間/サイズ要検証)

ライセンス

本リポジトリは MIT License を基にした改変ライセンス (追加 Attribution 条項) を採用しています。LICENSE を参照し、再配布時には以下を保持してください:

  • 著作権表示 (著者名: <YOUR_NAME> を差し替え)
  • 元リポジトリ URL: <ORIGINAL_REPOSITORY_URL> を差し替え
  • Attribution セクション全文

派生物は README 等で改変を明記してください。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 38.8%
  • Dockerfile 27.6%
  • Shell 20.7%
  • Makefile 12.9%