Lizard に FastAPI をデプロイする
Uvicorn が 0.0.0.0:8000 で待ち受けるようにして、Lizard で FastAPI を実行します。アプリの依存関係には FastAPI と Uvicorn の両方を含めてください。app = FastAPI() を宣言するファイルを import するだけでは、HTTP サーバーは起動しません。
プロジェクト例
FastAPI example には、アプリ、Procfile、固定された依存関係、MIT ライセンス、HTTP テストが含まれています。その CI は Linux 上で本番用の Uvicorn エントリポイントを実行します。GitHub からコミット df522c1 もデプロイし、2026-09-09 に公開 HTTPS 経由でヘルス、OpenAPI、対話型ドキュメント、JSON エコー、不正な入力、存在しないルートを確認しました。
アプリを準備する
この例では、requirements.txt と、アプリケーションルートにある main.py を使用します:
from fastapi import FastAPI
app = FastAPI()
@app.get("/health")
def health():
return {"status": "ok"}fastapi と uvicorn を依存関係のワークフローに追加し、解決済みでテスト済みのバージョンを requirements.txt に保存します。依存関係が対応している場合は、.python-version で Python のマイナーバージョンを選択します。たとえば 3.13 です。
明示的な import ターゲットを持つ Procfile を作成します:
web: uvicorn main:app --host 0.0.0.0 --port 8000main:app は、main.py 内の app オブジェクトを意味します。src/api.py には、src.api:app のように、アプリルートから動作する import パスを使用してください。明示的な Procfile により、カスタムレイアウトでのソースコードパターン検出への依存を避けられます。
| 設定 | 値 |
|---|---|
| Install | pip install -r requirements.txt |
| Start | Procfile web: command |
| サービスポート | 8000 |
| ビルド output | Pythonソースとインストール済み依存関係 |
ローカルでテストする
ローカルの仮想環境を使用します:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000別のターミナルで:
curl --fail http://localhost:8000/health{"status":"ok"} を含む正常なレスポンスを期待してください。開発中はリロードモードを維持します。FastAPIサーバーガイド では、ASGI サーバーと import ターゲットについて説明しています。
デプロイ
CLI setup の後、アプリケーションルートからアップロードします:
lizard init --name fastapi-app
lizard add --service api
lizard up --service api --port 8000
lizard logs --build --service api --json
lizard logs --service api --json
lizard ps --json.venv/、__pycache__/、.env のファイルは除外してください。サービスの build/start オーバーライドは未設定のままにして、lizardpack が Procfile を読み取るようにします。ここでの requirements ベースの経路では、別個の compile コマンドは不要です。
返された HTTPS URL で /health をリクエストし、その後に実際の API アクションをテストします。TCP ヘルスプローブで確認できるのは、そのプロセスがポートを開いていることだけです。ヘルスエンドポイントには、アプリにとって重要なチェックを追加できます。
データとよくある障害
認証情報は 変数とシークレット を通じて設定します。アプリがデータベースを必要とする場合は Managed Postgres を追加し、サービススコープの接続参照を使用してください。コンテナローカルのファイルは永続的なアプリケーションストレージではありません。ストレージとリカバリ を参照してください。
No module named uvicorn の場合は、インストールされた requirements を確認してください。ASGI の import エラーについては、同じルートから正確な Procfile コマンドをローカルで実行します。サービスがいつまでも healthy にならない場合は、ポート 8000 と bind host を確認してください。サーバーログがないままプロセスが終了する場合は、Uvicorn ではなく単に python main.py を実行していないか確認してください。
2026 年 9 月 9 日のデプロイ確認とその制限については、テスト済みバージョンとクラウド結果 を参照してください。