github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/stack/deploy.go (about)

     1  package stack
     2  
     3  import (
     4  	"github.com/docker/cli/cli"
     5  	"github.com/docker/cli/cli/command"
     6  	"github.com/docker/cli/cli/command/stack/loader"
     7  	"github.com/docker/cli/cli/command/stack/options"
     8  	"github.com/docker/cli/cli/command/stack/swarm"
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  func newDeployCommand(dockerCli command.Cli) *cobra.Command {
    13  	var opts options.Deploy
    14  
    15  	cmd := &cobra.Command{
    16  		Use:     "deploy [OPTIONS] STACK",
    17  		Aliases: []string{"up"},
    18  		Short:   "Deploy a new stack or update an existing stack",
    19  		Args:    cli.ExactArgs(1),
    20  		RunE: func(cmd *cobra.Command, args []string) error {
    21  			opts.Namespace = args[0]
    22  			if err := validateStackName(opts.Namespace); err != nil {
    23  				return err
    24  			}
    25  			config, err := loader.LoadComposefile(dockerCli, opts)
    26  			if err != nil {
    27  				return err
    28  			}
    29  			return swarm.RunDeploy(cmd.Context(), dockerCli, cmd.Flags(), &opts, config)
    30  		},
    31  		ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
    32  			return completeNames(dockerCli)(cmd, args, toComplete)
    33  		},
    34  	}
    35  
    36  	flags := cmd.Flags()
    37  	flags.StringSliceVarP(&opts.Composefiles, "compose-file", "c", []string{}, `Path to a Compose file, or "-" to read from stdin`)
    38  	flags.SetAnnotation("compose-file", "version", []string{"1.25"})
    39  	flags.BoolVar(&opts.SendRegistryAuth, "with-registry-auth", false, "Send registry authentication details to Swarm agents")
    40  	flags.BoolVar(&opts.Prune, "prune", false, "Prune services that are no longer referenced")
    41  	flags.SetAnnotation("prune", "version", []string{"1.27"})
    42  	flags.StringVar(&opts.ResolveImage, "resolve-image", swarm.ResolveImageAlways,
    43  		`Query the registry to resolve image digest and supported platforms ("`+swarm.ResolveImageAlways+`", "`+swarm.ResolveImageChanged+`", "`+swarm.ResolveImageNever+`")`)
    44  	flags.SetAnnotation("resolve-image", "version", []string{"1.30"})
    45  	flags.BoolVarP(&opts.Detach, "detach", "d", true, "Exit immediately instead of waiting for the stack services to converge")
    46  	flags.BoolVarP(&opts.Quiet, "quiet", "q", false, "Suppress progress output")
    47  	return cmd
    48  }