github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/cmd/swarmctl/service/create.go (about) 1 package service 2 3 import ( 4 "errors" 5 "fmt" 6 7 "github.com/docker/swarmkit/api" 8 "github.com/docker/swarmkit/cmd/swarmctl/common" 9 "github.com/docker/swarmkit/cmd/swarmctl/service/flagparser" 10 "github.com/spf13/cobra" 11 ) 12 13 var ( 14 createCmd = &cobra.Command{ 15 Use: "create", 16 Short: "Create a service", 17 RunE: func(cmd *cobra.Command, args []string) error { 18 if len(args) != 0 { 19 return errors.New("create command takes no arguments") 20 } 21 22 if !cmd.Flags().Changed("name") || !cmd.Flags().Changed("image") { 23 return errors.New("--name and --image are mandatory") 24 } 25 26 c, err := common.Dial(cmd) 27 if err != nil { 28 return err 29 } 30 31 spec := &api.ServiceSpec{ 32 Mode: &api.ServiceSpec_Replicated{ 33 Replicated: &api.ReplicatedService{ 34 Replicas: 1, 35 }, 36 }, 37 Task: api.TaskSpec{ 38 Runtime: &api.TaskSpec_Container{ 39 Container: &api.ContainerSpec{}, 40 }, 41 }, 42 } 43 44 if err := flagparser.Merge(cmd, spec, c); err != nil { 45 return err 46 } 47 48 if err := flagparser.ParseAddSecret(cmd, spec, "secret"); err != nil { 49 return err 50 } 51 52 r, err := c.CreateService(common.Context(cmd), &api.CreateServiceRequest{Spec: spec}) 53 if err != nil { 54 return err 55 } 56 fmt.Println(r.Service.ID) 57 return nil 58 }, 59 } 60 ) 61 62 func init() { 63 flags := createCmd.Flags() 64 flagparser.AddServiceFlags(flags) 65 flags.String("mode", "replicated", "one of replicated, global") 66 flags.StringSlice("secret", nil, "add a secret from swarm") 67 }