Explorar o código

stop containers after termination

Signed-off-by: TP-O <[email protected]>
TP-O %!s(int64=2) %!d(string=hai) anos
pai
achega
b304c4e154
Modificáronse 1 ficheiros con 6 adicións e 3 borrados
  1. 6 3
      pkg/compose/up.go

+ 6 - 3
pkg/compose/up.go

@@ -72,15 +72,18 @@ func (s *composeService) Up(ctx context.Context, project *types.Project, options
 			})
 			})
 		}, s.stderr())
 		}, s.stderr())
 	}
 	}
+
+	var isTerminated bool
+	eg, ctx := errgroup.WithContext(ctx)
 	go func() {
 	go func() {
 		<-signalChan
 		<-signalChan
+		isTerminated = true
 		printer.Cancel()
 		printer.Cancel()
 		fmt.Fprintln(s.stderr(), "Gracefully stopping... (press Ctrl+C again to force)")
 		fmt.Fprintln(s.stderr(), "Gracefully stopping... (press Ctrl+C again to force)")
-		stopFunc() //nolint:errcheck
+		eg.Go(stopFunc)
 	}()
 	}()
 
 
 	var exitCode int
 	var exitCode int
-	eg, ctx := errgroup.WithContext(ctx)
 	eg.Go(func() error {
 	eg.Go(func() error {
 		code, err := printer.Run(options.Start.CascadeStop, options.Start.ExitCodeFrom, stopFunc)
 		code, err := printer.Run(options.Start.CascadeStop, options.Start.ExitCodeFrom, stopFunc)
 		exitCode = code
 		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)
 	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
 		return err
 	}
 	}