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

新手上路,请多包涵

我想将一个简单的 JS Boilerplate 部署到 Docker Cloud。我使用了一个已经用于不同样板和图像的 Dockerfile。 Dockerfile 非常简单。它只是基于官方的 nginx,添加了两个配置文件,然后将我的 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 所以我可以想象这是某种奇怪的 Docker 缓存问题。

我的 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 文件生成的镜像
  • 使用不同的标签

我的构建命令:

 docker build -t my_repo/my_app .

谢谢你的帮助!

编辑: 所有其他文件夹都有效。这也不是文件权限的问题。看来,Docker 只是 不喜欢 dist 文件夹。这太糟糕了。

原文由 Ole Spaarmann 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

好吧,愚蠢的我。项目文件夹中有一个 .dockerignore 带有 dist 的文件…案例已关闭

原文由 Ole Spaarmann 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有同样的问题,但不是 .dockerignore ,我忘了指定运行 docker 的目录。在我的情况下,该目录是 . 我之前的完整命令是

docker build - < Dockerfile

之后是

docker build . < Dockerfile

原文由 Rich 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题