Dockerfile中的Docker构建显示“ADD失败 - 没有这样的文件或目录”

时间:2018-02-24 17:48:34

标签: docker nginx

当我尝试构建以下(简单)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不会改变任何事情。 有人在这里有解决方案吗?

5 个答案:

答案 0 :(得分:2)

此问题的最常见原因是:

  1. 路径错误

  2. 在您的.dockerignore

  3. 中设置泊坞窗构建器

答案 1 :(得分:1)

我的目录如下

.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

答案 2 :(得分:1)

一切顺利-进一步澄清,因为我需要它,我花了一些时间自行解决:

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

ADD directory1\directory2\filename.jar app.jar

您的文件结构是:

home
|-directory1
  |-directory2

使用时需要在家中

docker build . -f filepathToDocker/Dockerfile

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

答案 3 :(得分:0)

好的,对我而言,它使用了docker build . -f Dockerfile而不是docker build - < Dockerfile(顺便提一下这是官方的码头工作文档:https://docs.docker.com/engine/reference/commandline/build/#tarball-contexts)。解决方案取自github:https://github.com/moby/moby/issues/34986#issuecomment-343680872

答案 4 :(得分:0)

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

在这里,我不得不复制应用程序&#39;从/ home / arun / ks /到/在容器中。

所以,我在Dockerfile中做了如下更改。

添加$ {PWD} / apps / apps

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

$ pwd

/家庭/阿伦/ KS /

$ ls 应用程序网站

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

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