Repository navigation
fix: start and install on dockerd 29; e2e on both image stores - #146
Merged
Merged
Conversation
When docker compose up fails, containers that were created but not started stay behind. On the next attempt, compose starts them again, and Docker 29.7.2 lets such a container run without its published ports after a host port conflict. A retried update then reports success while a service is unreachable. Removing these containers right after the failure makes every attempt create them afresh, so a retry fails the same way the first attempt did. Signed-off-by: Mike Sul <mike.sul@foundries.io> Assisted-by: Claude Code:claude-opus-5-5
On a dockerd that uses the containerd image store, loading images without a progress reporter panics with a nil pointer dereference at the first "Loaded image:" message: the containerd branch calls the reporter unconditionally while the graphdriver branch checks it. Install calls the loader without a reporter when no progress is requested, so such an install crashes composectl. Signed-off-by: Mike Sul <mike.sul@foundries.io> Assisted-by: Claude Code:claude-opus-5-5
Devices run dockerd both with the overlay2 graphdriver and with the containerd image store, and the test environment covered only the former on dockerd 25. The test dockerd is now stock 29.7.2 with containerd 2.4.1, built on first start, and CONTAINERD_SNAPSHOTTER selects the image store; CI runs the suite once per store. Publishing test apps reads layer sizes from an overlay2 docker store, which the containerd image store does not have. A separate publisher dockerd, always on overlay2, now plays the FoundriesFactory CI so the device dockerd can use either store. The patched image loading in TestAppImageLoading needs the Foundries dockerd patches, which the stock daemon lacks; it now runs only when DOCKERD_FIO_PATCH=1. Signed-off-by: Mike Sul <mike.sul@foundries.io> Assisted-by: Claude Code:claude-opus-5-5
Devices run dockerd with the Foundries patches, while composectl must also work with a stock dockerd on any host. DOCKERD_FIO_PATCH=1 now builds the test dockerd from ghcr.io/foundriesio/moby:29.7.2_fio instead of the stock dind image, besides enabling the patched image loading test. CI runs the suite for each daemon and image store. Signed-off-by: Mike Sul <mike.sul@foundries.io> Assisted-by: Claude Code:claude-opus-5-5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Why
Devices run dockerd with the overlay2 graphdriver and with the containerd image store. The e2e
suite covered only overlay2 on moby 25.0.3. Running it on dockerd 29.7.2 with both stores found
two composectl bugs that affect devices.
Changes
docker compose upfails,containers that were created but never started stay behind. Docker 29.7.2 starts such a
container on the next attempt without its published port (25.0.3 kept refusing). A retried
update then reported success with an unreachable service. composectl now removes these
containers after a failed start.
an install without progress reporting panicked with a nil-pointer dereference at the first
Loaded image:message.test/compose/dockerd/Dockerfileon first start.CONTAINERD_SNAPSHOTTER(defaultfalse) selects the image store, and CI runs the suiteonce per store.
publish apps, because the layer-size script reads an overlay2 store.
TestAppImageLoadingruns only withDOCKERD_FIO_PATCH=1.Testing
make checkandmake test-unitpass.make test-e2epasses withCONTAINERD_SNAPSHOTTER=falseand withtrue.fix(start)commit also passes the e2e suite on the previous moby 25.0.3 daemon.Notes
is no published
29.7.2_fioimage.🤖 Generated with Claude Code