为什么docker build不使用构建缓存?

时间:2014-10-08 14:31:32

标签: docker

每当我更改Dockerfile时,即使我在文件末尾更改了某些内容,docker也会重新运行我的所有命令。这些命令是缓存。

1 个答案:

答案 0 :(得分:3)

在这种特殊情况下,我的图像基于包含此声明的图像

ONBUILD ADD . /some/path

这意味着,当Dockerfile更改时,我的Dockerfile中的任何语句都不会被缓存,因为ADD . /some/path在我的任何语句执行之前执行。

一般情况下:如果在ADD . /some/path之后语句中有Dockerfile语句,则可以缓存该语句,因为对Dockerfile的更改会使缓存失效。

我的解决方案是将我要添加的文件放入子目录my_data,然后将子目录的内容添加到路径中:

ADD my_data /some/path

不幸的是,将Dockerfile添加到.dockerignore无济于事,因为docker build无法执行,因为它找不到Dockerfile并且您收到错误{ {1}}