Dockerfile: retain the pip download cache between builds #6035
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation and context
This speeds up the build when the entire step can't be cached (e.g. the requirements file changed), but the package list remains mostly the same.
The savings are... rather underwhelming, actually. I have observed about a minute in savings, although it obviously depends on the network connection speed. I think this is because pip is inefficient at loading from its own cache (I have observed it loading the entire cached file into memory, for example).
Still, savings are savings, and we're getting them basically for free, so why not.
Note that I only persist the HTTP cache, and not the wheel cache. That's because any wheels that pip builds could depend on the system packages, and I don't want old wheels to be reused if the system packages change.
Also, disable the pip autoupdate checks, which isn't much of an optimization, but it gets rid of some pointless warnings.
How has this been tested?
docker build
Checklist
develop
branch[ ] I have added a description of my changes into the CHANGELOG file[ ] I have updated the documentation accordingly[ ] I have added tests to cover my changes[ ] I have linked related issues (see GitHub docs)[ ] I have increased versions of npm packages if it is necessary(cvat-canvas,
cvat-core,
cvat-data and
cvat-ui)
License
Feel free to contact the maintainers if that's a concern.