Dockerfile构建在ADD上产生lstat错误

时间:2017-01-13 20:16:36

标签: docker

我有一个简单的项目,具有以下结构:

docker/
|- src/
|  |- config.json
|
|- Dockerfile

json文件的内容:

{
  "setting": "value"
}

Dockerfile的内容:

FROM python:3.5

ADD src/config.json /testapp/config.json  # Config

我运行此构建命令:

docker build -t testapp:dev .

得到这个结果:

Sending build context to Docker daemon 4.608 kB
Step 1 : FROM python:3.5
 ---> 1d0326469b55
Step 2 : ADD src/config.json /testapp/config.json 
lstat testapp/config.json: no such file or directory

为什么会失败?为什么未找到的项目是testapp/config.json?在过去,我使用过这个确切的构造,例如,将requirements.txt文件复制到临时工作目录中。我不明白我错过了ADD如何工作导致失败的原因。谁能解释一下?

1 个答案:

答案 0 :(得分:2)

我成了IDE的受害者。这一行将失败:

ADD src/config.json /testapp/config.json  # Config

但这会成功:

ADD src/config.json /testapp/config.json

阅读documentation for add,它似乎正在尝试使用Config作为目标目录,因此/testapp/config.json被视为源文件。 IDE使# Config变灰,让我觉得它被视为评论:Dockerfiles不会进行内联注释。

这在comments上的Docker文档中有所介绍:

  

Docker会将以#开头的行视为注释。行中任何其他位置的#标记将被视为参数。