Docker build is not using cache
From your Dockerfile, if you append lines to your Dockerfile, or change the code being built, there's only one line that could be cached:
RUN mkdir /code
After that, you perform a:
COPY . /code
Since you have changed your Dockerfile, the contents of .
have changed (the Dockerfile is part of .
) and therefore the COPY
needs to be performed again, generating a new layer. Once you generate a new layer, every following layer no longer has a cache and needs to be rebuild.
To improve caching, consider placing the lines that change less towards the top of your Dockerfile. That would leave the COPY . /code
line at the very end of the file since it will change almost every time.
![Mike Muldoon](https://i.stack.imgur.com/3hqSr.gif?s=256&g=1)
Mike Muldoon
Updated on June 29, 2022Comments
-
Mike Muldoon about 2 years
docker build
is not using it's cache.docker build -f Dockerfile .
generates the same output that this does:
docker build -f Dockerfile --no-cache .
I am modifying the Dockerfile, adding commands at the end of the file. So the previous layers should be cached and valid.
I've got plenty of disk space.
Any ideas?
Docker version 17.06.1-ce, build 874a737
Dockerfile:
FROM registry:5000/base/python:xenial RUN mkdir /code COPY . /code RUN apt-get update && \ apt-get install -y \ vim \ less COPY /etc/foo /etc/foo ENTRYPOINT ["/bin/bash"]