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

执行docker-compose build时COPY命令失败:无法复制到非目录

Docker构建报错:cannot copy to non-directory

问题场景

执行以下Docker Compose构建命令时触发错误:

docker-compose -f docker-compose.yml build

Dockerfile配置

FROM ubuntu:20.04x

RUN apt update && apt upgrade -y  
RUN apt-get update  
RUN apt install -y python3.8-dev python3-pip git-core 

COPY ./ ./ 
ARG DEBIAN_FRONTEND=noninteractive 
RUN python3 -m pip install setuptools==57.5.0 
RUN cd ./tools && python3 install_env.py 
ENV PYTHONPATH ./tools/src/ 
RUN cd config && pip3 install -r requirements.txt 

docker-compose.yml配置

version: '3'
services:   
    helix-build:     
        build:         
            context: $WORKSPACE         
            dockerfile: ./config/Dockerfile     
        image: build_sanity_check_image

报错信息

[5/8] COPY ./ ./
#9 ERROR: cannot copy to non-directory: /var/lib/docker/overlay2/gafhkgbr6f6ixasuq4dk5cowk/merged/lib
[5/8] COPY ./ ./:
failed to solve: cannot copy to non-directory: /var/lib/docker/overlay2/gafhkgbr6f6ixasuq4dk5cowk/merged/lib

关键现象

仓库中新添加了lib目录,移除或重命名该目录后,构建即可正常完成。

问题原因

Ubuntu 20.04系统镜像的根目录下,原本就存在一个名为lib的符号链接文件(而非目录),它是指向系统库目录lib/x86_64-linux-gnu的关键系统文件。当你执行COPY ./ ./时,Docker会尝试把本地仓库里的lib目录复制到容器根目录,但目标路径已经被非目录文件占用,复制操作因路径冲突触发"cannot copy to non-directory"错误。

解决方法

  • 重命名本地仓库的lib目录,比如改为app_lib这类不与系统路径冲突的名称。
  • 修改Dockerfile的COPY指令,不要直接复制整个上下文到根目录,而是指定需要复制的具体文件/目录,示例:
    COPY ./tools/ ./tools/
    COPY ./config/ ./config/
    # 按需添加其他需要复制的内容
    
  • 将本地lib目录复制到容器内的非系统路径下,示例:
    COPY ./lib/ ./app/lib/
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:50:27