我想将一个简单的JS Boilerplate部署到Docker Cloud。我使用的Dockerfile已经用于不同的Boilerplate和图像。 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 Cache问题。
我的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 -t my_repo/my_app .
谢谢你的帮助!
编辑:每个其他文件夹工作。它也不是文件权限的问题。看来,Docker只是doesn't like the dist folder。哪个很烂。
嗯,傻我。在项目文件夹中有一个带.dockerignore
的dist
文件......案例已关闭
我有同样的问题,但它不是.dockerignore
,我忘了指定运行docker的目录。在我的情况下,该目录是.
我之前的完整命令是
docker build - < Dockerfile
之后是
docker build . < Dockerfile
我在build命令之后使用-f指定dockerfile
例如:
sudo docker build . -t test:i386 -f mydockerfile
构建后的点是要构建的目录,在本例中为dir。
我也有同样的问题,问题不是我的.dockerignore
而是我的.gitignore
,因为我无法从我的gitgnore删除dist我在我的Dockerfile中添加了cp
命令:
....
WORKDIR /
RUN cp -r public/dist/* www/
EXPOSE 80
我遇到了这个问题,问题结果是我在内容中引用了一个评论,例如:
COPY file1.txt dest/ # comment
事实证明你不能这样做。
Google App Engine SDK版本138中的相关错误导致出现相同的错误消息。此错误已在SDK的139版中修复。您可以使用以下命令升级到最新版本:
gcloud components upgrade
对于以下docker build错误,
COPY failed: stat /<**path**> :no such file or directory
我通过重启docker服务来解决它。
sudo service docker restart
(信用:https://serverfault.com/a/666154/152918)
要复制的文件必须位于Docker映像目录中。您无法在文件系统的任何位置引用文件。