Docker:构build映像时出现“lstat no such file or directory”错误。 文件在那里

我想部署一个简单的JS Boilerplate到Docker Cloud。 我使用了一个我已经用于不同的Boilerplate和图像的Dockerfile。 Dockerfile非常简单。 它只是基于官方的nginx,添加两个configuration文件,然后将我的gulp样板的输出文件夹添加到nginx根目录。 所以我把它从一个目录复制到新的样板,因为我想试试这个。

我得到的错误是这(最后一行)

Sending build context to Docker daemon 277.5 kB Step 1 : FROM nginx ---> af4b3d7d5401 Step 2 : MAINTAINER Ole Bjarnstroem ---> Using cache ---> f57bc23d9444 Step 3 : ENV LANG en_US.UTF-8 ---> Using cache ---> f6f4a76092dd Step 4 : COPY ./nginx/nginx.conf /etc/nginx/nginx.conf ---> Using cache ---> c4f83a39ba73 Step 5 : COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf ---> Using cache ---> 6fe5a6b61d9f Step 6 : ADD ./dist /usr/share/nginx/html lstat dist: no such file or directory 

但dist文件夹在那里。

 . ├── Dockerfile ├── JSCS.intellij.formatter.xml ├── README.md ├── app ├── dist ├── gulpfile.babel.js ├── jspm.conf.js ├── jspm_packages ├── karma.conf.js ├── nginx ├── node_modules ├── package.json ├── tsconfig.json ├── tslint.json ├── typings └── typings.json 

可能值得注意的是,要复制的文件夹被称为./public所以我可以想象这是一个奇怪的Dockercaching问题。

我的Dockerfile:

 FROM nginx ENV LANG en_US.UTF-8 # Copy configuration files COPY ./nginx/nginx.conf /etc/nginx/nginx.conf COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf # Add Gulp output folder to server root ADD ./dist /usr/share/nginx/html # Port configuration EXPOSE 8080 

我到目前为止所尝试的是:

  • 删除悬挂和未使用的图像
  • 删除之前由相同的docker文件生成的图像
  • 使用不同的标签

我的build立命令:

 docker build -t my_repo/my_app . 

谢谢你的帮助!

编辑:每个其他文件夹的作品。 这也不是文件权限的问题。 看来,Docker只是不喜欢dist文件夹 。 哪个糟糕。

那么,愚蠢的我。 在项目文件夹中有一个.dockerignore文件,其中dist是closures的

我有同样的问题,但它不是.dockerignore ,我忘了指定目录来运行docker。在我的情况下,该目录是. 我以前的全部命令是

 docker build - < Dockerfile 

之后

 docker build . < Docker file 

我使用build命令后使用-f来指定dockerfile

例如:

sudo docker build . -t test:i386 -f mydockerfile

构build完成后的点是要构build的目录,在本例中为目录。

我有这个问题,结果问题是我已经发表了一个评论,例如

COPY file1.txt dest/ # comment

原来你不能这样做。

Google App Engine SDK版本138中的相关错误导致了相同的错误消息。 这个bug已经在SDK的139版中得到了修复。 您可以使用以下命令升级到最新版本:

 gcloud components upgrade 

我也有同样的问题,问题不是我的.dockerignore但我的.gitignore ,因为我不能删除我的gitgnore的dist我已经在我的Dockerfile中添加cp命令:

 .... WORKDIR / RUN cp -r public/dist/* www/ EXPOSE 80 

对于以下docker生成错误,

 COPY failed: stat /<**path**> :no such file or directory 

我通过重新启动docker服务得到了它。

 sudo service docker restart 

(学分: https : //serverfault.com/a/666154/152918 )

您要复制的文件必须在Docker镜像目录中。 您不能在文件系统的任何位置引用文件。