Jelajahi Sumber

introduce compose create command

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 4 tahun lalu
induk
melakukan
df702362a3
3 mengubah file dengan 54 tambahan dan 1 penghapusan
  1. 1 0
      cli/cmd/compose/compose.go
  2. 47 0
      cli/cmd/compose/create.go
  3. 6 1
      cli/cmd/compose/up.go

+ 1 - 0
cli/cmd/compose/compose.go

@@ -107,6 +107,7 @@ func Command(contextType string) *cobra.Command {
 			buildCommand(&opts),
 			pushCommand(&opts),
 			pullCommand(&opts),
+			createCommand(&opts),
 		)
 	}
 	command.Flags().SetInterspersed(false)

+ 47 - 0
cli/cmd/compose/create.go

@@ -0,0 +1,47 @@
+/*
+   Copyright 2020 Docker Compose CLI authors
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+package compose
+
+import (
+	"github.com/spf13/cobra"
+)
+
+type createOptions struct {
+	*composeOptions
+}
+
+func createCommand(p *projectOptions) *cobra.Command {
+	opts := createOptions{
+		composeOptions: &composeOptions{},
+	}
+	cmd := &cobra.Command{
+		Use:   "create [SERVICE...]",
+		Short: "Creates containers for a service.",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			return runCreateStart(cmd.Context(), upOptions{
+				composeOptions: &composeOptions{
+					projectOptions: p,
+					Build:          opts.Build,
+				},
+				noStart: true,
+			}, args)
+		},
+	}
+	flags := cmd.Flags()
+	flags.BoolVar(&opts.Build, "build", false, "Build images before starting containers.")
+	return cmd
+}

+ 6 - 1
cli/cmd/compose/up.go

@@ -47,6 +47,7 @@ type upOptions struct {
 	removeOrphans bool
 	forceRecreate bool
 	noRecreate    bool
+	noStart       bool
 }
 
 func (o upOptions) recreateStrategy() string {
@@ -92,7 +93,7 @@ func upCommand(p *projectOptions, contextType string) *cobra.Command {
 	case store.LocalContextType, store.DefaultContextType, store.EcsLocalSimulationContextType:
 		flags.BoolVar(&opts.forceRecreate, "force-recreate", false, "Recreate containers even if their configuration and image haven't changed.")
 		flags.BoolVar(&opts.noRecreate, "no-recreate", false, "If containers already exist, don't recreate them. Incompatible with --force-recreate.")
-
+		flags.BoolVar(&opts.noStart, "no-start", false, "Don't start the services after creating them.")
 	}
 
 	return upCmd
@@ -135,6 +136,10 @@ func runCreateStart(ctx context.Context, opts upOptions, services []string) erro
 		return err
 	}
 
+	if opts.noStart {
+		return nil
+	}
+
 	if opts.Detach {
 		return nil
 	}