From b304c4e1547e0e9119a74207ae1661967e2986aa Mon Sep 17 00:00:00 2001 From: TP-O Date: Wed, 19 Apr 2023 18:54:35 +0700 Subject: [PATCH] stop containers after termination Signed-off-by: TP-O --- pkg/compose/up.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/compose/up.go b/pkg/compose/up.go index 611ee8e42..d051e0deb 100644 --- a/pkg/compose/up.go +++ b/pkg/compose/up.go @@ -72,15 +72,18 @@ func (s *composeService) Up(ctx context.Context, project *types.Project, options }) }, s.stderr()) } + + var isTerminated bool + eg, ctx := errgroup.WithContext(ctx) go func() { <-signalChan + isTerminated = true printer.Cancel() fmt.Fprintln(s.stderr(), "Gracefully stopping... (press Ctrl+C again to force)") - stopFunc() //nolint:errcheck + eg.Go(stopFunc) }() var exitCode int - eg, ctx := errgroup.WithContext(ctx) eg.Go(func() error { code, err := printer.Run(options.Start.CascadeStop, options.Start.ExitCodeFrom, stopFunc) exitCode = code @@ -88,7 +91,7 @@ func (s *composeService) Up(ctx context.Context, project *types.Project, options }) err = s.start(ctx, project.Name, options.Start, printer.HandleEvent) - if err != nil { + if err != nil && !isTerminated { // Ignore error if the process is terminated return err }