-
-
Notifications
You must be signed in to change notification settings - Fork 667
feat: parallel docker-compose pull
, improve ddev debug download-images
, fixes #7163
#7483
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Download the artifacts for this pull request:
See Testing a PR. |
Congratulations! That's significant speed improvement! |
Regarding implementing pull on After thinking about it, I would prefer pulling once per day on But I think this is out of scope for this PR. Key change here:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work.
I see solid speed improvements
Results
v1.24.7
Elapsed time: 72134 ms
Elapsed time: 72152 ms
Elapsed time: 67262 ms
v1.24.7-9-g249c4e63e
Elapsed time: 34329 ms
Elapsed time: 49075 ms
Elapsed time: 45244 ms
OS: Ubuntu (WSL2 on Win11)
Docker: Docker Desktop (4.42.0
)
I really appreciate the display tweak too. It adds a great "polished" feel. |
I have terrible internet today so bad testing environment, but will get to this before long. |
576fa16
to
7eb9f86
Compare
Thank you! Fixed both issues. |
It's looking good! More nits... The name given isn't really the name of the pulled image. For example, we didn't pull
|
Did you already check this out for offline usage? I'll try to give it a shot. |
Comprehensive PR Analysis (Claude Code Review)OverviewThis PR implements parallel Docker image pulling to significantly improve DDEV's image download performance, addressing issue #7163. The implementation shows impressive performance gains - roughly 50% faster image downloads (from ~47s to ~24s). Issue ContextIssue #7163 requested enabling parallel downloads via Docker Compose during pre-pull of images. The original approach downloaded images sequentially, causing slow startup times on first boot or when Docker images were pruned. Key Changes1. Enhanced
2. Refactored Image Pulling Architecture
3. Improved Docker Compose Integration
4. Data Structure Changes
Function Moves and Refactoring AnalysisThe PR includes several strategic function moves to improve code organization: 1.
2.
3.
Technical ImplementationThe core innovation is creating temporary Docker Compose projects with only image definitions and using Before: Sequential Performance Impact
Code Quality AssessmentRefactoring Excellence:
Implementation Quality:
DocumentationUpdated command documentation in Final AssessmentThis is a well-implemented enhancement that delivers significant performance improvements through both:
The function moves strengthen the overall architecture by:
The refactoring improves code organization while maintaining backward compatibility, and the performance gains justify the complexity of the changes. Recommendation: ✅ Strongly Approve - This PR successfully addresses the performance issue with a clean, well-tested implementation that also improves the overall codebase architecture through thoughtful refactoring. Analysis performed using Claude Code |
Yes, works as before.
That's not an image name, it's a service name. I avoided using the image name because I wasn't sure what pattern was valid there. I found the allowed pattern here https://github.com/compose-spec/compose-go/blob/0bd910723fa2d79a3da0334cbec6f958f632936d/schema/compose-spec.json#L31 So now, each image name used as a service name during pull will look like this: -ddev/ddev-webserver:v1.24.7
+ddev-ddev-webserver-v1.24.7
|
64f7e9d
to
a3d9115
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great, works great. Thanks for all the finesse and for getting the actual docker image names (or at least pseudo-names) in there.
The Issue
How This PR Solves The Issue
docker pull
completelydocker-compose pull
everywhereddev debug download-images
:--all
flag to pull everything for all projectsManual Testing Instructions
Speed comparison for pulling basic images (Linux AMD64):
Before (three retries):
After (three retries):
Check out:
Automated Testing Overview
Release/Deployment Notes