Azure应用Zip部署时.deployment文件未生效问题求助
排查与解决方法
验证.deployment文件的正确性
确保.deployment文件放在Zip包的根目录,内容格式严格符合要求,必须通过command字段指定脚本执行命令,示例:[config] command = bash startup.sh注意Linux环境区分大小写,文件名
.deployment(开头带点)不能拼写错误,startup.sh的路径要和实际位置完全匹配。修复startup.sh的执行环境声明
脚本开头必须添加shebang标识,明确指定执行环境:#!/bin/bash同时避免依赖脚本的可执行权限,直接通过
bash startup.sh调用(如上述.deployment配置),也可在脚本开头自行添加权限:chmod +x "$0"规避Run Package模式的只读限制
如果应用启用了WEBSITE_RUN_FROM_PACKAGE=1(Zip部署默认模式),此时文件系统为只读状态,自定义部署脚本无法执行依赖安装这类写入操作。解决方式:- 本地提前将依赖打包到项目目录:
pip install --target ./backend/lib -r requirements.txt --no-index --find-links downloaded_pip - 修改startup.sh,让Python加载本地依赖:
cd /home/site/wwwroot/backend export PYTHONPATH=$PYTHONPATH:/home/site/wwwroot/backend/lib gunicorn --bind=0.0.0.0:8081 --timeout 600 app:app
- 本地提前将依赖打包到项目目录:
替换相对路径为绝对路径
部署时的工作目录可能并非预期的根目录,脚本中所有路径改用绝对路径:# 替换 cd backend 为 cd /home/site/wwwroot/backend # 替换pip为Azure对应Python版本的绝对路径,例如3.9版本: /opt/python/3.9/bin/pip install --no-index --find-links /home/site/wwwroot/backend/downloaded_pip -r /home/site/wwwroot/backend/requirements.txt通过日志定位具体错误
登录Kudu控制台(Azure门户→应用服务→高级工具→Go),查看以下日志:/home/site/deployments/latest/log.log:部署全过程日志,确认是否执行了.deployment指定的命令,以及是否有报错- 可在startup.sh中添加日志输出,方便排查执行问题:
pip install ... >> /home/site/wwwroot/startup.log 2>&1 gunicorn ... >> /home/site/wwwroot/startup.log 2>&1
检查启动命令冲突
确认Azure门户“配置→通用设置”中未设置启动命令,该配置会直接覆盖.deployment文件的command字段。
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

