diff --git a/pkg/compose/logs.go b/pkg/compose/logs.go index d5d73ac0d..5544c4923 100644 --- a/pkg/compose/logs.go +++ b/pkg/compose/logs.go @@ -20,12 +20,11 @@ import ( "context" "io" - "github.com/docker/docker/pkg/stdcopy" - "golang.org/x/sync/errgroup" - "github.com/docker/compose/v2/pkg/api" "github.com/docker/compose/v2/pkg/utils" "github.com/docker/docker/api/types" + "github.com/docker/docker/pkg/stdcopy" + "golang.org/x/sync/errgroup" ) func (s *composeService) Logs(ctx context.Context, projectName string, consumer api.LogConsumer, options api.LogOptions) error { @@ -38,7 +37,7 @@ func (s *composeService) Logs(ctx context.Context, projectName string, consumer if options.Follow { eg.Go(func() error { printer := newLogPrinter(consumer) - return s.watchContainers(projectName, options.Services, printer.HandleEvent, containers, func(c types.Container) error { + return s.watchContainers(ctx, projectName, options.Services, printer.HandleEvent, containers, func(c types.Container) error { return s.logContainers(ctx, consumer, c, options) }) }) diff --git a/pkg/compose/start.go b/pkg/compose/start.go index cd0aa66bb..cc4d18bd2 100644 --- a/pkg/compose/start.go +++ b/pkg/compose/start.go @@ -47,7 +47,7 @@ func (s *composeService) start(ctx context.Context, project *types.Project, opti } eg.Go(func() error { - return s.watchContainers(project.Name, options.AttachTo, listener, attached, func(container moby.Container) error { + return s.watchContainers(ctx, project.Name, options.AttachTo, listener, attached, func(container moby.Container) error { return s.attachContainer(ctx, container, listener, project) }) }) @@ -69,13 +69,13 @@ func (s *composeService) start(ctx context.Context, project *types.Project, opti type containerWatchFn func(container moby.Container) error // watchContainers uses engine events to capture container start/die and notify ContainerEventListener -func (s *composeService) watchContainers(projectName string, services []string, listener api.ContainerEventListener, containers Containers, onStart containerWatchFn) error { +func (s *composeService) watchContainers(ctx context.Context, projectName string, services []string, listener api.ContainerEventListener, containers Containers, onStart containerWatchFn) error { watched := map[string]int{} for _, c := range containers { watched[c.ID] = 0 } - ctx, stop := context.WithCancel(context.Background()) + ctx, stop := context.WithCancel(ctx) err := s.Events(ctx, projectName, api.EventsOptions{ Services: services, Consumer: func(event api.Event) error {