Linux上Azure App Service Python应用ZipDeploy时,两个配置项兼容吗?
问题解答
1. WEBSITE_RUN_FROM_PACKAGE="1"与SCM_DO_BUILD_DURING_DEPLOYMENT=true的兼容性
这两个配置项完全兼容,且功能互补:
SCM_DO_BUILD_DURING_DEPLOYMENT=true:触发部署阶段的自动构建流程,由Oryx负责解析requirements.txt、安装依赖、生成虚拟环境(venv),确保应用运行所需的依赖全部就绪。WEBSITE_RUN_FROM_PACKAGE="1":启用后,App Service会将构建完成的打包文件(包含应用代码和venv)以只读挂载的方式加载到/home/site/wwwroot,避免每次启动重复解压和依赖安装,大幅提升应用启动速度和稳定性。
注意:启用WEBSITE_RUN_FROM_PACKAGE后,/home/site/wwwroot会变为只读目录,若应用需要写入文件,需将写入路径指向/home下的其他可写目录(如/home/site/data)。
2. 部署流程的正确性验证
你的假设基本正确,完整流程如下:
- 执行
az webapp deploy --resource-group "$resource_group_name" --name "$app_name" --type "zip" --src-path "backend.zip"命令上传包含Python代码和requirements.txt的zip包后,Kudu部署服务触发部署流程。 - 因
SCM_DO_BUILD_DURING_DEPLOYMENT=true,Oryx自动检测Python运行环境,读取requirements.txt并在临时目录安装所有依赖,生成虚拟环境。 - Oryx将应用代码、venv及其他构建产物打包为一个zip文件,上传至
/home/data/SitePackages目录,同时生成packagename.txt文件记录该zip包的名称。 - 由于
WEBSITE_RUN_FROM_PACKAGE="1",App Service将/home/data/SitePackages目录下的目标zip包挂载为/home/site/wwwroot(只读),随后启动gunicorn运行你的Python应用。
内容的提问来源于stack exchange,提问作者successhawk
相关产品推荐
相关产品推荐

