diff --git a/cmd/compose/compose.go b/cmd/compose/compose.go index d2f8e98e9..72d8effc7 100644 --- a/cmd/compose/compose.go +++ b/cmd/compose/compose.go @@ -42,6 +42,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" + "github.com/docker/cli/cli-plugins/plugin" "github.com/docker/compose/v2/cmd/formatter" "github.com/docker/compose/v2/pkg/api" "github.com/docker/compose/v2/pkg/compose" @@ -75,7 +76,7 @@ func AdaptCmd(fn CobraCommand) func(cmd *cobra.Command, args []string) error { return func(cmd *cobra.Command, args []string) error { ctx := cmd.Context() contextString := fmt.Sprintf("%s", ctx) - if !strings.HasSuffix(contextString, ".WithCancel") { // need to handle cancel + if !strings.Contains(contextString, ".WithCancel") || plugin.RunningStandalone() { // need to handle cancel cancellableCtx, cancel := context.WithCancel(cmd.Context()) ctx = cancellableCtx s := make(chan os.Signal, 1) @@ -277,7 +278,12 @@ const PluginName = "compose" // RunningAsStandalone detects when running as a standalone program func RunningAsStandalone() bool { - return len(os.Args) < 2 || os.Args[1] != manager.MetadataSubcommandName && os.Args[1] != PluginName + println("check running as standalone") + standalone := len(os.Args) < 2 || os.Args[1] != manager.MetadataSubcommandName && os.Args[1] != PluginName + fmt.Fprintf(os.Stderr, "%v+\n", os.Args) + println("len os.args", len(os.Args)) + println("STANDALONE:", standalone) + return standalone } // RootCommand returns the compose command with its child commands