使用Dockerfile构建Docker镜像时,提示"ADD failed - No such file or directory"错误。

6
当我尝试构建以下(简单的)NGINX Docker容器https://github.com/MarvAmBass/docker-nginx-ssl-secure时,总是会出现以下错误:stat /var/lib/docker/tmp/docker-builder00Whatever/basic.conf: no such file or directory 我的目录看起来像这样:
├── basic.conf
├── Dockerfile
├── entrypoint.sh
├── LICENSE
├── README.md
└── ssl.conf

以root用户身份运行命令sudo docker build - < Dockerfile并没有改变任何东西。这里有人有解决方案吗?


好的,我解决了...运行docker build . -f Dockerfile而不是docker build - < Dockerfile就可以了。我也会把这个作为答案放上去... - FranzHuber23
为什么是-1???????? - FranzHuber23
6个回答

5

4
这个问题最常见的原因有:
  1. 路径不正确

  2. .dockerignore 文件中包含了 docker-builder


3

当我使用以下目录结构的docker-compose.yml时,我发现了相同的错误信息。我通过在docker-compose.yml中更新dockerfile路径来修复它,如下所示。

.docker      
├── basic.conf
├── Dockerfile

当我发现错误时,我的 docker-compose.yml 如下所示:

services:
  web:
    build:
      context: ./
      dockerfile: .docker/nginx

我通过更新 docker-compose.yml 文件解决了这个问题。

services:
  web:
    build:
      context: ./
      dockerfile: .docker/nginx/Dockerfile

说实话,我不知道这与问题有什么关系? - FranzHuber23
当我使用上述目录结构时,我发现在使用 docker-compose.yml 时出现了相同的错误消息。通过更新 docker-compose.yml 中的 dockerfile 路径,我解决了这个问题,并且成功消除了该错误消息。 - KHACHORNCHIT

1

大家好 - 为了进一步澄清,因为我需要它并且花了一点时间才能自己弄清楚:

在Dockerfile中使用ADD时,您需要位于相对于添加位置的目录中,而不是相对于Dockerfile。

ADD directory1\directory2\filename.jar app.jar

而你的文件结构如下:

home
|-directory1
  |-directory2

你需要在家中使用以下内容:

docker build . -f filepathToDocker/Dockerfile

我想这对于复制也是正确的,但我还没有测试过。


0

当我在Ubuntu机器上运行docker时,也遇到了同样的错误。 我可以通过在ADD指令中在源文件之前提及${pwd}来解决它。

在这里,我必须将“apps”从/home/arun/ks/复制到容器中的/。

因此,我在Dockerfile中进行了如下更改。

ADD ${PWD}/apps /apps

然后我从源文件位置而不是Dockerfile位置构建了docker镜像。

$ pwd

/home/arun/ks/

$ ls apps web

$ sudo docker image build -t image-name . -f path-to-the-dockerfile

在这里,我们应该同时使用.和-f选项。


0

其中一种可能是源路径不正确

ADD ./directory/basic.conf /dir/

替代

ADD basic.conf /dir/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接