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

无需从ACR拉取新镜像,Azure Pipelines部署Docker容器遇问题

解决Azure DevOps流水线修改容器后部署丢失的问题

核心逻辑

Azure Web App for Containers的部署机制是从配置好的镜像仓库(比如你的ACR)拉取镜像启动容器,所以你在流水线代理机器上修改本地容器的操作,没法直接同步到Web App——部署任务一定会重新拉取ACR里的原始镜像,覆盖你的修改。要保留修改,得把修改逻辑直接放到Web App容器的启动或运行阶段,而非先改本地容器再部署。

可行方案

方案一:自定义启动命令注入修改

在发布流水线的Azure Web App for Containers部署任务里,通过启动命令参数把你的修改脚本传入,让Web App启动容器时自动执行修改:

  1. 找到部署任务的「容器设置」区域
  2. 在「启动命令」输入框中填入你的修改逻辑,注意先执行修改再启动原应用,示例:
    powershell.exe -Command "Set-Content C:\app\config.json '{\"key\":\"new-value\"}' ; & C:\app\startup.exe"
    

方案二:用Azure CLI远程修改运行中的容器

如果修改需要在容器启动后执行,可在部署任务后加一个Azure CLI任务,直接远程执行容器内的命令:

  1. 添加Azure CLI任务,绑定对应的Azure订阅
  2. 脚本类型选PowerShell,填入如下命令(替换占位符为实际值):
    # 获取Web App的容器ID
    $containerId = az webapp log container show --name <你的WebApp名称> --resource-group <资源组名> --query 'containerId' -o tsv
    
    # 执行修改操作,比如修改配置文件
    az webapp exec --name <你的WebApp名称> --resource-group <资源组名> --command "powershell.exe Set-Content C:\app\config.json '{\"key\":\"new-value\"}'"
    
    # 按需重启应用让修改生效
    az webapp restart --name <你的WebApp名称> --resource-group <资源组名>
    

方案三:挂载存储共享保存修改

如果修改的是静态文件或配置文件,可把这些文件挂载到Azure存储共享,直接在流水线中修改存储里的文件,Web App容器启动时会自动读取挂载的文件:

  1. 在Azure门户给Web App配置存储挂载,将容器内需要修改的目录映射到Azure文件共享
  2. 在发布流水线中添加Azure PowerShell任务,直接修改存储里的文件:
    # 下载存储中的目标文件到代理机器
    az storage file download --account-name <存储账户名> --share-name <文件共享名> --path config.json --dest-path ./config.json
    
    # 修改文件内容
    (Get-Content ./config.json) -replace '"key":"old-value"', '"key":"new-value"' | Set-Content ./config.json
    
    # 上传修改后的文件回存储共享
    az storage file upload --account-name <存储账户名> --share-name <文件共享名> --path config.json --source ./config.json
    

关键说明

Azure Web App for Containers没有直接上传本地修改后容器的接口,它的部署完全依赖镜像仓库拉取。所以必须放弃“修改本地容器再部署”的思路,把修改逻辑转移到Web App侧执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:33