处理 Docker build 错误 “Failed to copy files”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理 Docker build 错误 “Failed to copy files”相关的知识,希望对你有一定的参考价值。

参考技术A 在Mac笔记本上构建docker镜像的时候,遇到了错误:

考虑到当时由于调试,多次构建了镜像并开启了容器,可能是一些中间文件没有删除。但是以下命令仅显示已经构建好的镜像:

查看docker文档,发现了df命令,可用于查询镜像、容器和本地卷(Local Volumes)等空间使用大户的空间占用情况:

发现本地卷占的空间非常大。对其进行删除:

问题得到了解决。

为啥 docker-compose build 没有给我这样的文件或目录错误消息

【中文标题】为啥 docker-compose build 没有给我这样的文件或目录错误消息【英文标题】:Why does docker-compose build give me no such file or directory error message为什么 docker-compose build 没有给我这样的文件或目录错误消息 【发布时间】:2020-02-17 10:27:41 【问题描述】:

我想使用 docker 和 docker-compose 设置一个 laravel 开发环境。而且我无法构建我的 Dockerfile。

我按照教程没有成功:

https://github.com/BretFisher/php-docker-good-defaults https://dev.to/aschmelyun/the-beauty-of-docker-for-local-laravel-development-13c0 https://www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose

当我使用sudo docker exec -it php sh 我登录到 php 实例,我可以运行 composer install。

docker-compose.yml

  build:
    context: .
    dockerfile: Dockerfile
  container_name: php
  restart: unless-stopped
  tty: true
  volumes:
    - ./src:/var/www                                                                                                  
  ports:                                                                                                   
    - "9000:9000"                                                                                                 
  networks:                                                                                                   
    - laravel

Dockerfile

FROM php:7.0-fpm-alpine
WORKDIR /var/www
COPY composer.lock composer.json /var/www

第 3/3 步:复制 composer.lock composer.json /var/www/ 错误:服务“php”未能构建:复制失败:stat /var/lib/docker/tmp/docker-builder015559251/composer.lock : 没有这样的文件或目录

这是我终端进入 php 实例时的目录结构。

【问题讨论】:

composer.lock 在您的主机上位于哪个文件夹级别? 我在终端进入php实例时添加了目录结构的截图。 文件应该在你的主机中,然后你可以复制它。这就是我的意思 您需要像@LinPy 所说的那样添加文件。例如,您可以这样做(使用 $ ADD . . 复制所有内容 我想我误解了 ADD 和 COPY 之间的区别。 【参考方案1】:

以防万一其他人降落在这里:

我的 docker 文件中有这一行:

COPY composer.lock composer.json /var/www

它应该是: ''' 复制 src/composer.lock src/composer.json 。 '''

基本上你的路径副本(前两个参数)是相对于 Dockerfile 的。 并且粘贴到路径是相对于已设置为 /var/www 的 WORKDIR。

我希望这会有所帮助,但如果有什么我需要澄清的,请发表评论。

【讨论】:

以上是关于处理 Docker build 错误 “Failed to copy files”的主要内容,如果未能解决你的问题,请参考以下文章

docker 中的 Python 错误 - distutils.errors.CompileError: command 'gcc' failed with exit status 1

错误greenlet docker build

在容器内运行 Chromium:libGl 错误

为啥 docker-compose build 没有给我这样的文件或目录错误消息

dotnet aspnetcore docker build 失败并显示 145 错误代码

如何为Docker build设置http