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

Docker Desktop升级后COPY/ADD构建失败,原有配置失效求解决

问题分析与解决

第一个报错(找不到app/apache路径)

你的报错信息提到找不到/var/lib/docker/tmp/.../app/apache,但你提供的目录结构和COPY命令里并没有涉及app/apache目录,说明你的app.dockerfile中存在其他引用app/apache路径的COPY/ADD命令。

Docker 25.x版本默认启用的BuildKit构建引擎,会严格检查所有COPY/ADD命令的源路径是否存在,哪怕这些命令处于条件分支中(旧版本可能不会提前检查)。解决方式:

  • 打开app.dockerfile,查找所有包含app/apache的COPY/ADD语句:
    • 如果该目录是冗余配置,直接删除对应的命令;
    • 如果确实需要该目录,在backend/docker/app下创建apache目录,或者修正路径指向实际存在的位置。

第二个报错(changes out of order)

你执行COPY app/app.ini时缺少目标路径,这是不符合Dockerfile语法规范的。旧版本Docker可能允许省略目标(默认复制到当前工作目录),但BuildKit对语法的校验更严格,必须明确指定目标位置:

  • 正确写法示例:
    # 复制到指定目录
    COPY app/app.ini /usr/local/etc/php/conf.d/
    # 或者复制到当前工作目录(注意末尾的点)
    COPY app/app.ini .
    

额外注意事项

  1. 构建上下文确认:你的docker-compose.yml中指定context: docker,意味着构建上下文是backend/docker目录,所有COPY/ADD的源路径都要相对于这个目录。你原来的COPY app/php/app.ini /usr/local/etc/php/conf.d/路径是正确的(对应backend/docker/app/php/app.ini),只要没有其他错误命令,这个语句本身不会导致报错。
  2. 清理构建缓存:升级Docker后可能残留旧的构建缓存,执行docker builder prune清理缓存后再重新构建,避免缓存干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:47:38