diff --git a/cli/cmd/compose/start.go b/cli/cmd/compose/start.go index 670fd7094..75f1c6661 100644 --- a/cli/cmd/compose/start.go +++ b/cli/cmd/compose/start.go @@ -23,7 +23,6 @@ import ( "github.com/spf13/cobra" "github.com/docker/compose-cli/api/client" - "github.com/docker/compose-cli/api/compose" "github.com/docker/compose-cli/api/progress" "github.com/docker/compose-cli/cli/formatter" ) @@ -55,21 +54,22 @@ func runStart(ctx context.Context, opts startOptions, services []string) error { return err } - var consumer compose.LogConsumer - if !opts.Detach { - consumer = formatter.NewLogConsumer(ctx, os.Stdout) + project, err := opts.toProject() + if err != nil { + return err } - _, err = progress.Run(ctx, func(ctx context.Context) (string, error) { - project, err := opts.toProject() - if err != nil { - return "", err - } - err = filter(project, services) - if err != nil { - return "", err - } - return "", c.ComposeService().Start(ctx, project, consumer) - }) - return err + err = filter(project, services) + if err != nil { + return err + } + + if opts.Detach { + _, err = progress.Run(ctx, func(ctx context.Context) (string, error) { + return "", c.ComposeService().Start(ctx, project, nil) + }) + return err + } + + return c.ComposeService().Start(ctx, project, formatter.NewLogConsumer(ctx, os.Stdout)) } diff --git a/cli/cmd/compose/up.go b/cli/cmd/compose/up.go index 8888774ce..7d8ea351a 100644 --- a/cli/cmd/compose/up.go +++ b/cli/cmd/compose/up.go @@ -119,21 +119,27 @@ func runCreateStart(ctx context.Context, opts upOptions, services []string) erro } _, err = progress.Run(ctx, func(ctx context.Context) (string, error) { - return "", c.ComposeService().Create(ctx, project, compose.CreateOptions{ + err := c.ComposeService().Create(ctx, project, compose.CreateOptions{ RemoveOrphans: opts.removeOrphans, Recreate: opts.recreateStrategy(), }) + if err != nil { + return "", err + } + if opts.Detach { + err = c.ComposeService().Start(ctx, project, nil) + } + return "", err }) if err != nil { return err } - var consumer compose.LogConsumer - if !opts.Detach { - consumer = formatter.NewLogConsumer(ctx, os.Stdout) + if opts.Detach { + return nil } - err = c.ComposeService().Start(ctx, project, consumer) + err = c.ComposeService().Start(ctx, project, formatter.NewLogConsumer(ctx, os.Stdout)) if errors.Is(ctx.Err(), context.Canceled) { fmt.Println("Gracefully stopping...") ctx = context.Background()