Sfoglia il codice sorgente

Add support for stdin_open in composefile v3

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Vincent Demeester 8 anni fa
parent
commit
84450b72cd

+ 1 - 0
api/types/swarm/container.go

@@ -33,6 +33,7 @@ type ContainerSpec struct {
 	User            string                  `json:",omitempty"`
 	Groups          []string                `json:",omitempty"`
 	TTY             bool                    `json:",omitempty"`
+	OpenStdin       bool                    `json:",omitempty"`
 	Mounts          []mount.Mount           `json:",omitempty"`
 	StopGracePeriod *time.Duration          `json:",omitempty"`
 	Healthcheck     *container.HealthConfig `json:",omitempty"`

+ 1 - 0
cli/command/stack/deploy.go

@@ -505,6 +505,7 @@ func convertService(
 				Mounts:          mounts,
 				StopGracePeriod: service.StopGracePeriod,
 				TTY:             service.Tty,
+				OpenStdin:       service.StdinOpen,
 			},
 			Resources:     resources,
 			RestartPolicy: restartPolicy,

+ 26 - 24
daemon/cluster/convert/container.go

@@ -14,18 +14,19 @@ import (
 
 func containerSpecFromGRPC(c *swarmapi.ContainerSpec) types.ContainerSpec {
 	containerSpec := types.ContainerSpec{
-		Image:    c.Image,
-		Labels:   c.Labels,
-		Command:  c.Command,
-		Args:     c.Args,
-		Hostname: c.Hostname,
-		Env:      c.Env,
-		Dir:      c.Dir,
-		User:     c.User,
-		Groups:   c.Groups,
-		TTY:      c.TTY,
-		Hosts:    c.Hosts,
-		Secrets:  secretReferencesFromGRPC(c.Secrets),
+		Image:     c.Image,
+		Labels:    c.Labels,
+		Command:   c.Command,
+		Args:      c.Args,
+		Hostname:  c.Hostname,
+		Env:       c.Env,
+		Dir:       c.Dir,
+		User:      c.User,
+		Groups:    c.Groups,
+		TTY:       c.TTY,
+		OpenStdin: c.OpenStdin,
+		Hosts:     c.Hosts,
+		Secrets:   secretReferencesFromGRPC(c.Secrets),
 	}
 
 	if c.DNSConfig != nil {
@@ -123,18 +124,19 @@ func secretReferencesFromGRPC(sr []*swarmapi.SecretReference) []*types.SecretRef
 
 func containerToGRPC(c types.ContainerSpec) (*swarmapi.ContainerSpec, error) {
 	containerSpec := &swarmapi.ContainerSpec{
-		Image:    c.Image,
-		Labels:   c.Labels,
-		Command:  c.Command,
-		Args:     c.Args,
-		Hostname: c.Hostname,
-		Env:      c.Env,
-		Dir:      c.Dir,
-		User:     c.User,
-		Groups:   c.Groups,
-		TTY:      c.TTY,
-		Hosts:    c.Hosts,
-		Secrets:  secretReferencesToGRPC(c.Secrets),
+		Image:     c.Image,
+		Labels:    c.Labels,
+		Command:   c.Command,
+		Args:      c.Args,
+		Hostname:  c.Hostname,
+		Env:       c.Env,
+		Dir:       c.Dir,
+		User:      c.User,
+		Groups:    c.Groups,
+		TTY:       c.TTY,
+		OpenStdin: c.OpenStdin,
+		Hosts:     c.Hosts,
+		Secrets:   secretReferencesToGRPC(c.Secrets),
 	}
 
 	if c.DNSConfig != nil {

+ 1 - 0
daemon/cluster/executor/container/container.go

@@ -185,6 +185,7 @@ func (c *containerConfig) config() *enginecontainer.Config {
 	config := &enginecontainer.Config{
 		Labels:       c.labels(),
 		Tty:          c.spec().TTY,
+		OpenStdin:    c.spec().OpenStdin,
 		User:         c.spec().User,
 		Env:          c.spec().Env,
 		Hostname:     c.spec().Hostname,