Selaa lähdekoodia

forward signal to container

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 2 vuotta sitten
vanhempi
sitoutus
fed8ef6b79
1 muutettua tiedostoa jossa 10 lisäystä ja 0 poistoa
  1. 10 0
      pkg/compose/run.go

+ 10 - 0
pkg/compose/run.go

@@ -19,6 +19,8 @@ package compose
 import (
 	"context"
 	"fmt"
+	"os"
+	"os/signal"
 
 	"github.com/compose-spec/compose-go/types"
 	"github.com/docker/cli/cli"
@@ -38,6 +40,14 @@ func (s *composeService) RunOneOffContainer(ctx context.Context, project *types.
 	start.Attach = !opts.Detach
 	start.Containers = []string{containerID}
 
+	// remove cancellable context signal handler so we can forward signals to container without compose to exit
+	signal.Reset()
+
+	sigc := make(chan os.Signal, 128)
+	signal.Notify(sigc)
+	go cmd.ForwardAllSignals(ctx, s.dockerCli, containerID, sigc)
+	defer signal.Stop(sigc)
+
 	err = cmd.RunStart(s.dockerCli, &start)
 	if sterr, ok := err.(cli.StatusError); ok {
 		return sterr.StatusCode, nil