Dockerfile找不到我的包含

时间:2015-08-22 00:34:39

标签: node.js docker iojs

Docker的新手并且正在检查文档,但似乎这是一个合理的第一次访问Dockerfile。

我正在运行以下Dockerfile,但遇到了一些问题:

FROM iojs:onbuild
COPY ../../webserver/includes/masterconfig.js ../../webserver/includes/masterconfig.js

这可能是一个新手的错误,但感谢您的帮助:)

docker build -t nearby-pushes .
Sending build context to Docker daemon 9.728 kB
Sending build context to Docker daemon
Step 0 : FROM iojs:onbuild
# Executing 3 build triggers
Trigger 0, COPY package.json /usr/src/app/
Step 0 : COPY package.json /usr/src/app/
 ---> Using cache
Trigger 1, RUN npm install
Step 0 : RUN npm install
 ---> Using cache
Trigger 2, COPY . /usr/src/app
Step 0 : COPY . /usr/src/app
 ---> 5f4c87e2362c
Removing intermediate container 16a8fb4b4be1
Step 1 : COPY ../../webserver/includes/masterconfig.js ../../webserver/includes/masterconfig.js
INFO[0010] ../../webserver/includes/masterconfig.js: no such file or directory

2 个答案:

答案 0 :(得分:3)

ADDCOPY指令无法查看父目录中的文件。 换句话说,您不能将它们用于以../开头的文件路径。

来自Docker文档:

  

路径必须位于构建的上下文中;你不能添加../something / something,因为docker build的第一步是将上下文目录(和子目录)发送到docker守护进程。

  

路径必须位于构建的上下文中;你不能COPY ../something / something,因为docker build的第一步是将上下文目录(和子目录)发送到docker守护进程。

重要的词是构建的上下文。来自docker build文档:

  

从Dockerfile和“context”构建Docker镜像。构建的上下文是位于指定PATH或URL中的文件。构建过程可以引用上下文中的任何文件。例如,您的构建可以使用ADD指令来引用上下文中的文件。

答案 1 :(得分:0)

错误显示它无法在您的目录中找到masterconfig.js。尝试使用绝对目录,dst目录也使用像/masterconfig.js这样的绝对目录,例如

FROM iojs:onbuild
COPY absolutepath/webserver/includes/masterconfig.js /masterconfig.js

或确保dst目录存在,

CMD mkdir -p /webserver/includes
COPY absolutepath/webserver/incldues/masterconfig.js /webserver/incldues/maserconfig.js