Python on Azure App Service — 코드 배포
Python(Flask, Django, FastAPI, 일반) 코드를 Azure App Service Linux(P0v3, Python 3.14)에 배포합니다. RG + Plan + Web App이 없으면 생성합니다. VNet, Key Vault, 데이터베이스, 또는 IaC가 필요하면 azure-prepare에 위임합니다.
사용되는 MCP 도구: mcp_azure_mcp_subscription_list, mcp_azure_mcp_group_list, mcp_azure_mcp_appservice, mcp_azure_mcp_azd (azure.yaml이 있을 때).
워크플로우
- 컨텍스트 파악 — 스마트 기본값, 최소한의 프롬프트. 앱 이름만 대화형으로 입력합니다. RG(
<app>-rg), Plan(<app>-plan), 리전(현재az기본값 또는eastus2), 구독은 자동으로 유추됩니다. create-app.md §1을 참조하세요. - 프레임워크 감지 (참고용, 절대 차단하지 않음). detect.md를 참조하세요.
- 경로 선택 —
azure.yamlhost: appservice → deploy-azd.md; 그 외 → deploy-azcli.md를 참조하세요. - RG → Plan (
P0v3 --is-linux) → Web App (--runtime "PYTHON:3.14")이 있는지 확인. 일시적인 ARM 오류 발생 시 transient-retry.md를 따릅니다. create-app.md를 참조하세요. - Startup 설정 — Flask/Django: 없음 (Oryx가 자동 감지). FastAPI: 항상
python -m uvicorn main:app --host 0.0.0.0. 기타: 경고. startup-commands.md를 참조하세요. SCM_DO_BUILD_DURING_DEPLOYMENT=true설정.- 배포 —
azd deploy또는az webapp deploy --type zip --track-status false. - 중지. 배포 후 메시지 출력 (post-deploy-message.md 참조) 후 턴을 종료합니다.
엄격한 규칙
- ⛔ 배포 후 검증 금지 — 배포가 반환된 후
az webapp log tail,curl,Invoke-WebRequest또는 상태 확인을 실행하지 마십시오. App Service는 웜업에 2~3분이 필요합니다. 조용한 로그 또는 초기 5xx는 오류가 아닙니다. - ⛔ 셸 안전 —
--runtime에는 항상"PYTHON:3.14"(콜론)을 사용하세요."PYTHON|3.14"(파이프는 셸 연산자)는 사용하지 마십시오. - ⛔ 절대
az webapp up사용 금지 — 사용 중단됨. 7단계 명령어를 사용하세요. - ✅ URL 형식 — 엔드포인트는
https://...URL 형식으로 표시하세요.
오류 처리
전체 증상 → 원인 → 해결 매트릭스는 errors.md를 참조하세요. 빠른 분류: Plan/App 없음 → 4단계 재실행; 8000 포트 컨테이너 ping 타임아웃 → startup 수정(5단계); 배포 후 ModuleNotFoundError → 6단계 실행 여부 확인 후 재배포.