You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure本地Git部署问题:wwwroot文件与Git仓库内容不一致

解决Azure App Service本地Git部署后wwwroot残留旧文件的问题

一、快速清理旧文件的临时办法

1. 用部署钩子自动清理

在项目根目录新建两个文件:

  • .deployment:指定部署脚本路径
[config]
command = deploy.cmd
  • deploy.cmd:先执行清理再跑默认构建流程
@echo off
REM 清空wwwroot目录
rmdir /s /q "%DEPLOYMENT_TARGET%"
mkdir "%DEPLOYMENT_TARGET%"

REM 继续执行Oryx的默认构建部署
call "%SCM_BUILD_ARGS%"

如果习惯用PowerShell,也可以用deploy.ps1替代deploy.cmd:

# 强制删除wwwroot所有内容,忽略删除空目录的错误
Remove-Item -Path $env:DEPLOYMENT_TARGET -Recurse -Force -ErrorAction SilentlyContinue
New-Item -Path $env:DEPLOYMENT_TARGET -ItemType Directory -Force

# 调用默认构建流程
& $env:SCM_BUILD_ARGS

把这两个文件提交到Git仓库,下次推送部署时就会自动先清空再更新。

2. 手动应急清理

临时处理残留文件的话,直接登录Kudu控制台(https://<你的应用名>.scm.azurewebsites.net/DebugConsole),执行命令删除目标文件:
比如只清理prisma/migrations的旧文件:

rm -rf /home/site/wwwroot/prisma/migrations/*

要清空整个wwwroot就用:

rm -rf /home/site/wwwroot/*

二、长期可靠的部署方案

1. 换成Zip部署彻底替换内容

Zip部署会全量覆盖wwwroot目录,从根源避免旧文件残留。在CI/CD流水线里按以下步骤操作:

  • 本地执行npm run build完成应用构建
  • 将构建产物打包成Zip文件
  • 用Azure CLI命令部署:
az webapp deploy --resource-group <你的资源组名> --name <应用名> --src-path <构建产物的zip路径> --type zip

2. 给Oryx配置环境变量自动清理

Oryx自带清理开关,只需在App Service中添加一个环境变量:

  • 进入Azure门户,找到你的App Service → 配置 → 应用程序设置
  • 新增设置:键为CLEAR_TARGET_DIRECTORY,值为true
  • 保存后,后续每次Oryx构建部署都会先清空wwwroot再复制新文件

3. 用专业CI/CD工具精准控制流程

切换到GitHub Actions或Azure DevOps Pipeline,这类工具自带清理参数。比如GitHub Actions的部署步骤添加clean: true:

- name: 部署到Azure App Service
  uses: azure/webapps-deploy@v2
  with:
    app-name: '<你的应用名>'
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
    package: '.'
    clean: true  # 开启该参数会先清理旧文件再部署

内容的提问来源于stack exchange,提问作者arvil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:05:26