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

含Docker的WordPress仓库迁移至Azure DevOps后Pipeline构建报文件不存在错误

Azure Pipeline构建WordPress Docker镜像失败问题定位与修复

核心问题根因

本地执行docker build构建正常、流水线抛出stat '/home/vsts/work/1/s/wp-content/db.php'不存在的错误,是三处配置错配叠加导致的:

  • Docker@2任务的构建上下文规则与本地手动构建逻辑不一致
    本地在项目根目录执行docker build -t test .时,构建上下文默认覆盖根目录下所有未被.dockerignore排除的文件。但Azure DevOps的Docker@2任务如果不显式声明buildContext参数,在使用**/Dockerfile通配符匹配Dockerfile路径时,会默认将匹配到的Dockerfile所在目录作为构建上下文,而非仓库根目录,和本地构建的上下文范围不统一。
  • Presslabs WordPress运行时镜像的内置构建脚本会做固定路径校验
    你使用的quay.io/presslabs/wordpress-runtime:5.5.1-php-7.4镜像内置了站点文件的自动部署逻辑,构建阶段会直接从构建上下文的固定路径下读取wp-content目录的自定义文件,一旦上下文范围偏移,脚本就会抛出ENOENT类的文件不存在错误。
  • 迁移过程中可能误配置了.dockerignore排除规则
    从GitHub迁移仓库到Azure DevOps时,如果仓库根目录的.dockerignore文件中加入了对wp-content路径的排除规则,会直接导致该目录下的所有文件不会被传入Docker构建的临时上下文,哪怕文件在仓库源目录下真实存在,构建流程也无法读取到。

具体修复步骤

  1. 显式指定Docker构建的上下文路径
    在Docker@2任务的输入配置中补充buildContext参数,将构建上下文明确指向仓库在构建代理上的本地路径,和本地构建的上下文范围保持一致:
    - task: Docker@2
      inputs:
        containerRegistry: 'gcr-publisher'
        command: 'buildAndPush'
        Dockerfile: '**/Dockerfile'
        buildContext: '$(Build.Repository.LocalPath)'
        tags: '$(Build.BuildId)'
    
  2. 校验.dockerignore规则
    检查仓库根目录下的.dockerignore文件,确认没有将wp-content、config这类需要打包到镜像的路径加入排除列表,避免必要文件被Docker构建流程过滤。
  3. 匹配路径校验
    对照docker-compose配置的挂载映射确认:你本地环境是将根目录下的./wp-content映射到容器内的/app/web/wp-content,由于当前Dockerfile没有编写任何COPY指令,所有自定义站点文件的读取完全依赖构建上下文的相对路径匹配,一旦上下文根目录偏移,构建脚本就无法找到对应路径下的db.php文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 07:45:03