feat(compose): add persistent Docker Compose support - #2123
Open
RobertDeRose wants to merge 4 commits into
Open
Conversation
- share boot initialization with specialized machine consumers - persist ownership metadata and runtime profile settings - add safe socket publication and orphan cleanup - preserve default-machine behavior for managed callers
- cancel signal handlers when process I/O completes - forward terminal and cancellation signals consistently - terminate child processes when the operation is cancelled
- run the real Docker Compose CLI in a nested-Docker machine - add image, socket, environment, completion, and help integration - package the plugin and pinned machine image resources - add opt-in idle shutdown and machine/DNS documentation - cover Compose configuration, lifecycle, and DNS behavior
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.
Type of Change
Motivation and Context
Inspired by the k8s' plugin implementation and
container machines, this feels like the correct way to finally support docker-compose.yml workflows in an efficient way that doesn't require a full compose-to-container translation layer.This adds
container composesupport backed by a persistent Linux container machinerunning Docker Engine and the real Docker Compose CLI.
This provides a Docker-compatible Compose workflow without Docker Desktop while
keeping Compose state isolated inside a managed
composemachine.What Changed
container composeplugin.composemachine and its Docker data across invocations./usr/bin/docker compose.container machine startfor generic stopped-machine recovery.--socket-path.Important Behavior
container compose downremoves Compose resources but does not delete or stop the machine.composemachine.--socket-pathreports the endpoint only; it never starts the machine.Testing
Validation completed:
git diff --checkpassed.Related Issues and Discussions