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

Docker构建报error from sender错误,.dockerignore为何未忽略只读目录

问题根因

Docker 客户端执行构建前会先递归扫描整个构建上下文的所有文件、目录,再匹配 .dockerignore 规则过滤不需要的内容。你遇到的报错发生在扫描阶段,早于规则匹配步骤:

  • 你的 client/cypress/resource 目录权限为 drwx------,所有者为 root,执行构建的普通用户没有读取、进入该目录的权限
  • Docker 客户端扫描到该目录时,尝试读取目录内容直接触发权限报错,还没来得及应用你配置的 client/cypress/resource 忽略规则

你提到忽略上级目录就能正常构建,原因也在这里:如果上级目录被标记为忽略,Docker 会直接跳过遍历该目录,不会碰到权限受限的 resource 目录。

可行解决方案(无需修改目录权限)

以下方案均可绕过权限问题:

  • 调整 .dockerignore 规则,添加末尾斜杠匹配目录本身:
    client/cypress/resource/
    
    部分Docker版本会直接跳过匹配到的目录的内部遍历,不需要读取目录内容就可以应用忽略规则。
  • 调整COPY指令,不复制整个client目录,改为单独复制你需要的client子目录/文件,直接跳过cypress目录或者cypress下的resource目录,示例:
    WORKDIR /src
    COPY client/package.json client/
    COPY client/src client/src
    # 只复制cypress下除了resource之外的内容
    COPY client/cypress/*.js client/cypress/
    COPY client/cypress/e2e client/cypress/e2e
    CMD ["/bin/bash"]
    
  • 如果用构建脚本执行docker build,可以在构建前临时将 client/cypress/resource 移动到构建上下文外,构建完成后再移回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:15:05