Commit Graph
1336 Commits
Author SHA1 Message Date
Nicolas De Loof d7e5f20eb6 images command should display image Created time or N/A if not available
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-13 09:40:56 +01:00
Nicolas De Loof 2b4543935c next release will be major version v5.x
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-13 09:32:43 +01:00
Nicolas De Loof 6e55832b1c add (restore) support for detach keys
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-12 14:23:58 +01:00
Nicolas De Loof 45def51117 make DRYRUN_PREFIX a display attribute, move DryRunClient out of pkg/api
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-12 11:17:28 +01:00
Nicolas De Loof aff5c115d6 move progress UI components into cmd
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-12 11:17:28 +01:00
Nicolas De Loof 5ef495c898 removed unecessary check
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-12 08:34:29 +01:00
Jonty dc90c4e44d Grammatical fix
Signed-off-by: Jonty <[email protected]>
2025-11-10 11:34:18 +01:00
Jonty 91e1753d80 Grammatical fix
Signed-off-by: Jonty <[email protected]>
2025-11-10 11:34:18 +01:00
Jonty 9db27a65c6 Making the American/British spellings consistent to the error messages
Signed-off-by: Jonty <[email protected]>
2025-11-10 11:34:18 +01:00
Nicolas De Loof 7eb5adeef6 introduce --insecure-registry, reserved for testing purpose
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-06 16:17:21 +01:00
Suleiman Dibirov 67e39a41f2 fixes
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-11-06 08:02:59 +01:00
Suleiman Dibirov dc1283289d fix: use NewParallelCLI in compose_run_build_once_test.go
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-11-06 08:02:59 +01:00
Nicolas De Loof af579ebd4b drop support for internal buildkit builder
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-04 11:36:40 +01:00
Nicolas De Loof fc2a7d13fa from Compose CLI, we know the streams used to configure LogConsumer
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-04 10:25:14 +01:00
Nicolas De Loof d70bb8cf5e distinguish event (short) status text and details
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-04 10:18:55 +01:00
Nicolas De Loof bff3d35305 render events in order they were first received
Signed-off-by: Nicolas De Loof <[email protected]>
2025-11-04 10:18:55 +01:00
Guillaume Lours d74274bc04 Add LoadProject method to Compose SDK API
This commit adds a new LoadProject method to the Compose service API,
allowing SDK users to programmatically load Compose projects with full
control over the loading process.

Changes:

1. New API method (pkg/api/api.go):
   - LoadProject(ctx, ProjectLoadOptions) (*types.Project, error)
   - ProjectLoadOptions struct with all loader configuration
   - LoadListener callback for event notifications (metrics, etc.)
   - ProjectOptionsFns field for compose-go loader options

2. Implementation (pkg/compose/loader.go):
   - createRemoteLoaders: Git and OCI remote loader setup
   - buildProjectOptions: Translates ProjectLoadOptions to compose-go options
   - postProcessProject: Service filtering, labels, resource pruning

3. Unit test (pkg/compose/loader_test.go):
   - Tests basic project loading functionality
   - Verifies ProjectOptionsFns with cli.WithoutEnvironmentResolution

4. Mock update (pkg/mocks/mock_docker_compose_api.go):
   - Added LoadProject to mock interface

Key design decisions:
- LoadListener pattern keeps metrics collection in CLI, not SDK
- ProjectOptionsFns exposes compose-go options directly (e.g., cli.WithInterpolation(false))
- Post-processing in SDK: labels, service filtering, resource pruning
- Environment resolution NOT in SDK (command responsibility)
- Compatibility mode handling (api.Separator)

Signed-off-by: Guillaume Lours <[email protected]>
2025-11-03 08:58:30 +01:00
Stanislav Zhuk 10f15cacdd fix typo in error message
Signed-off-by: Stanislav Zhuk <[email protected]>
2025-11-03 08:38:49 +01:00
Guillaume Lours 3658a063bb add AlwaysOkPrompt to replace 'AlwaysYes' current implementation'
Signed-off-by: Guillaume Lours <[email protected]>
2025-11-03 08:01:59 +01:00
Sebastiaan van Stijn 74a4ccdd85 fix various linting issues
Got these when running locally on a more recent version of golangci-lint:

    pkg/compose/build_bake.go:187:3: importShadow: shadow of imported from 'github.com/docker/cli/cli/command/image/build' package 'build' (gocritic)
                    build := *service.Build
                    ^
    pkg/compose/build_bake.go:526:19: importShadow: shadow of imported from 'github.com/docker/cli/cli/command/image/build' package 'build' (gocritic)
    func toBakeAttest(build types.BuildConfig) []string {
                      ^
    pkg/compose/create.go:1453:2: importShadow: shadow of imported from 'github.com/docker/docker/api/types/network' package 'network' (gocritic)
            network string,
            ^
    pkg/compose/create.go:1468:2: importShadow: shadow of imported from 'github.com/docker/docker/api/types/network' package 'network' (gocritic)
            network string,
            ^
    pkg/compose/monitor.go:42:17: importShadow: shadow of imported from 'github.com/docker/compose/v2/pkg/api' package 'api' (gocritic)
    func newMonitor(api client.APIClient, project string) *monitor {
                    ^
    cmd/compose/config.go:337:1: File is not properly formatted (gofumpt)
            return
    ^
    pkg/compose/convergence.go:608:1: File is not properly formatted (gofumpt)
                    return
    ^
    pkg/compose/cp.go:335:1: File is not properly formatted (gofumpt)
                    return
    ^
    pkg/e2e/compose_up_test.go:35:10: go-require: c.RunDockerComposeCmd contains assertions that must only be used in the goroutine running the test function (testifylint)
                    res := c.RunDockerComposeCmd(t, "-f", "fixtures/dependencies/deps-completed-successfully.yaml", "--project-name", projectName, "up", "--wait", "-d")
                           ^
    pkg/e2e/healthcheck_test.go:42:10: go-require: c.RunDockerComposeCmd contains assertions that must only be used in the goroutine running the test function (testifylint)
                    res := c.RunDockerComposeCmd(t, "-f", "fixtures/start_interval/compose.yaml", "--project-name", projectName, "up", "--wait", "-d", "test")
                           ^
    10 issues:
    * gocritic: 5
    * gofumpt: 3
    * testifylint: 2

Signed-off-by: Sebastiaan van Stijn <[email protected]>
2025-10-31 17:44:38 +01:00
Guillaume Lours 6719f47bd4 test checking bake internal load build definition
Signed-off-by: Guillaume Lours <[email protected]>
2025-10-30 21:25:32 +01:00
Suleiman Dibirov c416ea7036 fix compose_run_build_once_test.go
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-30 10:08:29 +01:00
Suleiman Dibirov 0d396bbacb fix(git): Add validation for Git subdirectory paths to prevent traversal
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-30 10:08:29 +01:00
Suleiman Dibirov fc74c78963 Update e2e tests in compose_run_build_once_test.go to use project names for Docker Compose commands.
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-29 10:47:18 +01:00
Suleiman Dibirov 658bff335f Revert "no parallel in compose_run_build_once_test.go"
This reverts commit e4f4a5aa86.

Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-29 10:47:18 +01:00
Suleiman Dibirov 80030e1390 no parallel in compose_run_build_once_test.go
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-29 10:47:18 +01:00
Suleiman Dibirov 6a35be5112 lint fix
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-29 10:47:18 +01:00
Suleiman Dibirov 0c854a6ab7 add e2e tests
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-29 10:47:18 +01:00
Suleiman Dibirov 557e0b6ec7 fix(run): Ensure images exist only for the target service in run command
Signed-off-by: Suleiman Dibirov <[email protected]>
2025-10-29 10:47:18 +01:00
Nicolas De Loof a8933c91e7 stop progress UI during build to prevent interference with buildkit Display
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-29 10:11:30 +01:00
Nicolas De Loof 7e3993bcac skip Start[ed|ing] events to avpd mix with container logs
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-29 10:11:30 +01:00
Nicolas De Loof fd4f2f99cf register TTYWritter as an Event Processor
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-29 10:11:30 +01:00
Nicolas De Loof ae25d27e5a remove unused RunWithStatus, always pass operation as title
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-29 10:11:30 +01:00
Nicolas De Loof 394466683a use eventBus to collect tasks progress
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-29 10:11:30 +01:00
Nicolas De Loof e5c8b68642 decouple Event from tty progress writer
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-29 10:11:30 +01:00
Nicolas De Loof bf50c99193 pretend cli.Out is a containerd console.File
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-28 14:39:50 +01:00
Guillaume Lours 8274be8d08 configure Compose service with io.Reader and io.Writer
remove usage of internal IO interfaces

Signed-off-by: Guillaume Lours <[email protected]>
2025-10-27 18:54:10 +01:00
Guillaume Lours 86e91e010d Add streamOverrideWrapper to intercepts command.Cli stream methods and transparently returns custom streams when provided via options
Add new GetConfiguredStreams function to Compose API definition

Signed-off-by: Guillaume Lours <[email protected]>
2025-10-27 16:17:50 +01:00
Guillaume Lours e1678c5c43 Introduce abstractions to support SDK usage without requiring Docker CLI
This commit prepares the Compose service for SDK usage by abstracting away
the hard dependency on command.Cli. The Docker CLI remains the standard path
for the CLI tool, but SDK users can now provide custom implementations of
streams and context information.

Signed-off-by: Guillaume Lours <[email protected]>
2025-10-27 16:17:50 +01:00
Nicolas De Loof 5924387e89 run hooks on restart
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-27 10:24:18 +01:00
Nicolas De Loof 7f668bd7fe Setup Compose service using functional parameters
This commit introduces WithMaxConcurrency and WithDryRun to replace direct mutators on composeService
commands and flags are translated into a set of functional parameters which are eventually applied
as a ComposeService is created just before being actually used by a command

Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-24 18:24:21 +02:00
Nicolas De Loof 3ce52883cb prompt default implementation to prevent a panic
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-24 10:21:59 +02:00
Nicolas De Loof ac3b8fd8a5 Code Cleanup
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-24 10:05:59 +02:00
Nicolas De Loof e59150baa8 fix OCI compose override support
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-23 12:04:37 +02:00
Nicolas De Loof 6a90742ef2 Test to check writeComposeFile detects invalid OCI artifact
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-22 20:09:32 +02:00
Nicolas De Loof 6007d4c7e7 publish env_file references as opaque hash to prevent paths conflicts
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-22 19:32:16 +02:00
Guillaume Lours 69bcb962bf Enforce compose files from OCI artifact all get into the same target (cache) folder
Signed-off-by: Guillaume Lours <[email protected]>
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-22 19:32:16 +02:00
Nicolas De Loof 9b4fcce034 introduce WithPrompt to configure compose backend to use a plugable UI component for user interaction
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-22 16:14:55 +02:00
Guillaume Lours da5c57c29d test digest or canonical reference, not only tag, when checking if an image is already present
Signed-off-by: Guillaume Lours <[email protected]>
2025-10-20 18:42:24 +02:00
Nicolas De Loof e25265dd55 remove unused code to only rely on api.Service
Signed-off-by: Nicolas De Loof <[email protected]>
2025-10-20 14:53:04 +02:00