0

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
4

2 回答 2

3

ADDandCOPY指令看不到父目录中的文件。换句话说,您不能将它们与以 . 开头的文件路径一起使用../

从 Docker 文档中:

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

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

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

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

于 2015-08-22T00:45:44.077 回答
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
于 2015-08-22T00:48:06.137 回答