Copying the whole project content with COPY . /app before installing the requirements, causes every change in any file to cause reinstallation of all requirements on the next Docker build.
After the change, only the requirements files are copied first with COPY *requirements* /app/
Then the requirements are installed, and this layer of the image could be cached for later builds, even if the application changes.
It is easy to test and see that after an initial build, changing anything in the application, will not reinstall all the dependencies on the next Docker build, resulting in a much faster build
Copying the whole project content with
COPY . /app
before installing the requirements, causes every change in any file to cause reinstallation of all requirements on the next Docker build.After the change, only the requirements files are copied first with
COPY *requirements* /app/
Then the requirements are installed, and this layer of the image could be cached for later builds, even if the application changes.
It is easy to test and see that after an initial build, changing anything in the application, will not reinstall all the dependencies on the next Docker build, resulting in a much faster build