我想将一个简单的 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 许可协议
好吧,愚蠢的我。项目文件夹中有一个
.dockerignore
带有dist
的文件…案例已关闭