为啥 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 不会为 mongo 打开端口?