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
答案 0 :(得分:3)
ADD
和COPY
指令无法查看父目录中的文件。
换句话说,您不能将它们用于以../
开头的文件路径。
来自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