Docker构建报错:Failed to calculate checksum of ref,路径存在却找不到
排查Docker COPY绝对路径找不到的方案
核心问题说明
Docker构建时,COPY指令的路径是相对于**构建上下文(build context)**的,而非宿主机的全局绝对路径。你当前执行构建的目录是~/PycharmProjects/django_project/docker_files/pcask/,构建上下文默认是该目录,因此Docker无法访问上下文之外的/home/michael/PycharmProjects/django_project/路径。
具体排查与解决步骤
调整构建上下文与COPY路径
这是最直接的解决方案,有两种方式:- 修改
docker-compose.yml的构建配置,指定正确的上下文路径:
然后修改services: pcask: build: context: /home/michael/PycharmProjects/django_project/ dockerfile: docker_files/pcask/DockerfileDockerfile中的COPY为相对上下文的路径:# Install dependencies COPY requirements.txt . RUN pip install -r requirements.txt # Copy project COPY . . - 将
Dockerfile移动到~/PycharmProjects/django_project/根目录,然后修改docker-compose.yml的build字段为该根目录,COPY同样使用相对路径。
- 修改
检查
.dockerignore文件
确认~/PycharmProjects/django_project/目录下的.dockerignore没有排除requirements.txt或项目根目录本身。比如如果文件中存在requirements.txt或.这类规则,会导致COPY无法找到目标文件。验证文件与目录权限
即使路径存在,Docker构建进程可能缺乏读取权限:- 执行
ls -l /home/michael/PycharmProjects/django_project/requirements.txt,查看权限是否为-rw-r--r--(其他用户有读权限)。 - 若权限不足,执行以下命令添加读权限:
sudo chmod o+r /home/michael/PycharmProjects/django_project/requirements.txt sudo chmod o+rx /home/michael/PycharmProjects/django_project/
- 执行
清理Docker缓存后重试
缓存可能导致异常,执行强制无缓存构建:sudo docker compose build --no-cache
内容的提问来源于stack exchange,提问作者Kifsif
相关产品推荐
相关产品推荐

