Node.js项目部署Azure App Service时如何排除指定文件夹不部署
Azure App Service部署排除指定文件夹的实现方法
以下是不同部署场景下的可行方案,优先推荐通用配置方案:
方法1:Kudu全局部署配置(通用所有部署场景,优先选择)
该方案适配Git推送、Zip部署、CLI部署等所有Azure官方支持的部署渠道,配置一次永久生效:
- 在项目根目录新建名为
.deployment的文件,写入以下配置:
[config] # 配置排除的文件夹,多个文件夹用分号分隔 SCM_BUILD_ARGS=-p:ExcludeFoldersFromDeployment="logs"
- 把该文件提交到项目根目录后,后续所有部署都会自动跳过logs文件夹上传。
方法2:.gitignore配置(仅适用Git推送部署场景)
如果你是通过Git仓库直接推送部署到Azure:
- 直接在项目根目录的
.gitignore文件中添加一行logs/,Git提交时会自动忽略logs文件夹,部署时自然不会上传到App Service。 - 注意:该方案对手动Zip上传、CLI Zip部署等非Git驱动的部署方式不生效。
方法3:Zip部署时指定排除规则
如果你是使用本地打包Zip后上传,或者用az CLI执行Zip部署:
- 手动打包时直接不把logs文件夹加入压缩包即可;
- 使用az CLI命令部署时,添加exclude参数即可自动排除:
az webapp deploy --name <你的应用名称> --resource-group <你的资源组名称> --src-path ./ --exclude "logs/**"
方法4:CI/CD流水线配置排除(适用GitHub Actions/Azure DevOps等自动部署场景)
在你的流水线配置文件的打包、上传制品步骤中添加排除规则即可。以GitHub Actions为例:
- name: 上传部署制品 uses: actions/upload-artifact@v3 with: name: nodejs-app path: | . !logs/
配置生效验证
部署完成后,进入Azure门户对应App Service的「高级工具」→「Go」进入Kudu面板,选择「Debug console」→「CMD/PowerShell」,进入site/wwwroot目录执行ls命令,若不存在logs文件夹则说明配置生效。
内容的提问来源于stack exchange,提问作者Keshav Naharwar
相关产品推荐
相关产品推荐

