L-deploy ch03 — Azure App Service にデプロイする
テクノロジ系 / L15 deploy — デプロイ
L-deploy ch03 — Azure App Service にデプロイする
ローカルで動く FastAPI を「世界からアクセスできる URL」に乗せる
ゴール
- Azure App Service の役割を説明できる
az webapp up1 コマンドで FastAPI を公開できる- 起動コマンド (Startup Command) の意味を理解する
- ログを
az webapp log tailで確認できる
全体像
[ローカル PC] [Azure App Service] main.py (FastAPI) ──► https://<app>.azurewebsites.net requirements.txt Linux + Python 3.11 ランタイム startup command uvicorn main:app --host 0.0.0.0
- App Service = 「アプリ専用の管理された VM」
- Docker を書かなくても Python アプリが動く (PaaS)
前提
| 項目 | 値 |
|---|---|
| Azure サブスクリプション | 無料枠 (F1) で OK |
| CLI | az (Azure CLI) インストール済み |
| FastAPI アプリ | main.py + requirements.txt がある |
az login # ブラウザでサインイン az account show # サブスクリプション確認
用意するファイル (3 つだけ)
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello from Azure"}# requirements.txt fastapi uvicorn[standard]
# .gitignore (任意) __pycache__/ .venv/
デプロイ手順 (3 ステップ)
1. リソースグループとアプリを一発で作る
az webapp up \ --name my-fastapi-demo \ --resource-group rg-fastapi-demo \ --location japaneast \ --runtime "PYTHON:3.11" \ --sku F1
--nameはグローバル一意 (URL になる)--sku F1= 無料プラン
デプロイ手順 (続き)
2. 起動コマンドを設定 (App Service は何で起動すべきか知らない)
az webapp config set \ --resource-group rg-fastapi-demo \ --name my-fastapi-demo \ --startup-file "uvicorn main:app --host 0.0.0.0 --port 8000"
3. ブラウザで確認
https://my-fastapi-demo.azurewebsites.net/
→ {"message": "Hello from Azure"}ログを見る
何かおかしいときは 必ずログを見る。
az webapp log tail \ --resource-group rg-fastapi-demo \ --name my-fastapi-demo
- リアルタイムで stdout / stderr が流れる
Ctrl+Cで抜ける
よくある詰まり
| 症状 | 原因 | 対処 |
|---|---|---|
Application Error | 起動コマンド未設定 | az webapp config set --startup-file |
| port が違うエラー | --host 0.0.0.0 を忘れた | startup file を修正 |
ModuleNotFoundError | requirements.txt 漏れ | 追記して再デプロイ |
| デプロイは成功するが古い | キャッシュ | az webapp restart |
再デプロイ
コードを直したら、同じコマンドをもう一度叩くだけ。
az webapp up --name my-fastapi-demo
az webapp up は「既存アプリがあれば再デプロイ」モードで動く。
後片付け (重要)
無料枠でも放置せず、不要ならリソースグループごと削除。
az group delete --name rg-fastapi-demo --yes --no-wait
- リソースグループを消すと、中の App Service・プラン・ログも全部消える
- 課金事故の防止策
drill
drill/ — Azure App Service へのデプロイを walkthrough 形式で読み解く
まとめ
- App Service は コード + 起動コマンド だけで動かせる PaaS
- 三種の神器:
az webapp up/az webapp config set --startup-file/az webapp log tail - 終わったら
az group deleteで消す
次に学ぶ領域
| 領域 | 続けて読む |
|---|---|
| Render へのデプロイ | ch04-render |
| 環境変数で DB 接続情報を渡す | App Service の Configuration |
| CI/CD で GitHub Actions から自動デプロイ | azure/webapps-deploy@v3 |
力試ししたい方は クイズ形式の演習(任意) もあります。読むだけでも十分です。