| layout | showcase-page | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| title | Manual Deployment Notes | ||||||||||||||
| permalink | /reference/deploy/manual_deploy/ | ||||||||||||||
| menubar | docs_menu | ||||||||||||||
| accent | orange | ||||||||||||||
| eyebrow | Deployment Reference | ||||||||||||||
| description | Use these notes when you are intentionally running Simple Chat as a native Python Azure App Service deployment instead of the repo's container deployers. | ||||||||||||||
| hero_icons |
|
||||||||||||||
| hero_pills |
|
||||||||||||||
| hero_links |
|
||||||||||||||
| nav_links |
|
||||||||||||||
| show_nav | true |
Use this path only when native Python App Service is an intentional operating choice. It is not the default runtime model for the repo, so the main thing to get right is the distinction between native Python startup behavior and the container-based deployers used elsewhere.
Before touching the app, verify that you are actually running a native Python App Service deployment and not one of the repo's container paths.
Native Python deployments require an explicit Gunicorn startup command. Leaving it blank is a common way to turn a routine upgrade into downtime.
Use VS Code deploy, ZIP deploy, or deployment slots based on how much repeatability and rollback capability you need.
Confirm the app starts, dependencies install correctly, and the site is healthy before closing the change.
Container-based App Service deployments in this repo do not need the native Python startup command because the image entrypoint already launches Gunicorn. Native Python App Service does need it, and that difference drives the whole deployment checklist here.
Set the App Service Stack Settings Startup command explicitly.
Do not leave the Startup command empty during an upgrade. Validate it before or during the release.
Deploy and run the application/single_app folder in App Service.
Use this Startup command:
python -m gunicorn -c gunicorn.conf.py app:appUse this checklist when updating an existing native Python App Service deployment.
- Confirm the deployment model is native Python Azure App Service, not container-based App Service.
- Confirm the
application/single_appfolder is the deployment unit and the Startup command is present and correct. - Choose an upgrade method:
- VS Code deployment when you want the simplest manual update path.
- Azure CLI ZIP deploy when you want a repeatable package-and-deploy path.
- Deployment slots when you want validation and rollback for production.
- If you use ZIP deploy, confirm
SCM_DO_BUILD_DURING_DEPLOYMENT=trueso App Service installs dependencies fromrequirements.txt. - Validate the site after deployment.
Deploy the updated code from VS Code by right-clicking the existing App Service and selecting Deploy to Web App....
Package the updated application into a deployment ZIP, then deploy it:
az webapp deploy \
--resource-group <Your-Resource-Group-Name> \
--name <Your-App-Service-Name> \
--src-path ../deployment.zip \
--type zipThis is an upgrade method, not only an initial deployment method.
- Native Python App Service needs the Startup command above.
- The repo-provided
azd, Bicep, Terraform, and Azure CLI deployers do not need this because they deploy a container image whose entrypoint already launches Gunicorn.