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

Posted

技术标签:

【中文标题】为啥 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-compose build 没有给我这样的文件或目录错误消息的主要内容,如果未能解决你的问题,请参考以下文章

如何在 docker-compose 中定义 build-args?

docker-compose 常用命令参数解释

为啥 docker-compose 不会为 mongo 打开端口?

docker-compose启动容器失败了怎么办

xcode构建iOS app时为啥分version和build两个版本号

在 .gitlab-ci.yml 中运行 docker-compose build