Răsfoiți Sursa

add --wait option to start command

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 3 săptămâni în urmă
părinte
comite
b32297dccd

+ 14 - 3
cmd/compose/start.go

@@ -18,6 +18,7 @@ package compose
 
 import (
 	"context"
+	"time"
 
 	"github.com/docker/cli/cli/command"
 	"github.com/docker/compose/v5/pkg/api"
@@ -27,6 +28,8 @@ import (
 
 type startOptions struct {
 	*ProjectOptions
+	wait        bool
+	waitTimeout int
 }
 
 func startCommand(p *ProjectOptions, dockerCli command.Cli, backendOptions *BackendOptions) *cobra.Command {
@@ -41,6 +44,10 @@ func startCommand(p *ProjectOptions, dockerCli command.Cli, backendOptions *Back
 		}),
 		ValidArgsFunction: completeServiceNames(dockerCli, p),
 	}
+	flags := startCmd.Flags()
+	flags.BoolVar(&opts.wait, "wait", false, "Wait for services to be running|healthy. Implies detached mode.")
+	flags.IntVar(&opts.waitTimeout, "wait-timeout", 0, "Maximum duration in seconds to wait for the project to be running|healthy")
+
 	return startCmd
 }
 
@@ -54,9 +61,13 @@ func runStart(ctx context.Context, dockerCli command.Cli, backendOptions *Backen
 	if err != nil {
 		return err
 	}
+
+	timeout := time.Duration(opts.waitTimeout) * time.Second
 	return backend.Start(ctx, name, api.StartOptions{
-		AttachTo: services,
-		Project:  project,
-		Services: services,
+		AttachTo:    services,
+		Project:     project,
+		Services:    services,
+		Wait:        opts.wait,
+		WaitTimeout: timeout,
 	})
 }

+ 5 - 3
docs/reference/compose_start.md

@@ -5,9 +5,11 @@ Starts existing containers for a service
 
 ### Options
 
-| Name        | Type   | Default | Description                     |
-|:------------|:-------|:--------|:--------------------------------|
-| `--dry-run` | `bool` |         | Execute command in dry run mode |
+| Name             | Type   | Default | Description                                                                |
+|:-----------------|:-------|:--------|:---------------------------------------------------------------------------|
+| `--dry-run`      | `bool` |         | Execute command in dry run mode                                            |
+| `--wait`         | `bool` |         | Wait for services to be running\|healthy. Implies detached mode.           |
+| `--wait-timeout` | `int`  | `0`     | Maximum duration in seconds to wait for the project to be running\|healthy |
 
 
 <!---MARKER_GEN_END-->

+ 22 - 0
docs/reference/docker_compose_start.yaml

@@ -4,6 +4,28 @@ long: Starts existing containers for a service
 usage: docker compose start [SERVICE...]
 pname: docker compose
 plink: docker_compose.yaml
+options:
+    - option: wait
+      value_type: bool
+      default_value: "false"
+      description: Wait for services to be running|healthy. Implies detached mode.
+      deprecated: false
+      hidden: false
+      experimental: false
+      experimentalcli: false
+      kubernetes: false
+      swarm: false
+    - option: wait-timeout
+      value_type: int
+      default_value: "0"
+      description: |
+        Maximum duration in seconds to wait for the project to be running|healthy
+      deprecated: false
+      hidden: false
+      experimental: false
+      experimentalcli: false
+      kubernetes: false
+      swarm: false
 inherited_options:
     - option: dry-run
       value_type: bool