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

Ubuntu环境下Dockerfile引用同级目录文件失败,求正确方法

Docker ADD命令引用同级目录文件的正确方法

你遇到的问题核心是Docker构建上下文的限制:Docker在执行build命令时,只会把你指定的构建上下文(默认是Dockerfile所在目录)内的文件打包传给Docker daemon,不允许用../这种路径跳出上下文,这是出于安全和构建一致性的设计,所以你原来的ADD ../B/awesomescript.sh会找不到文件。

下面是两种靠谱的解决办法:

  • 调整构建上下文到父目录
    找到A和B共同的父目录(假设叫parent),执行build命令时指定这个父目录作为上下文,同时指定Dockerfile的路径:

    docker build -f ./A/Dockerfile ./parent
    

    然后把Dockerfile里的ADD命令改成:

    ADD ./B/awesomescript.sh /opt/mydir/scripts
    

    此时构建上下文是parent目录,Docker能直接访问到B目录下的文件。

  • 复制文件到Dockerfile所在目录的上下文内
    如果不想改构建命令,可以先把B目录下的脚本复制到A目录的某个子文件夹里(比如A/scripts/),然后Dockerfile里的命令改成:

    ADD ./scripts/awesomescript.sh /opt/mydir/scripts
    

    这种方式适合不想调整构建流程的场景,但需要注意维护文件的同步——可以写个简单的shell脚本在构建前自动复制,避免手动操作出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:58:09