summaryrefslogtreecommitdiff
path: root/cmd/podman
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman')
-rw-r--r--cmd/podman/common.go2
-rw-r--r--cmd/podman/create.go31
-rw-r--r--cmd/podman/inspect.go3
3 files changed, 23 insertions, 13 deletions
diff --git a/cmd/podman/common.go b/cmd/podman/common.go
index e0aaf52c0..657535e63 100644
--- a/cmd/podman/common.go
+++ b/cmd/podman/common.go
@@ -173,7 +173,7 @@ var createFlags = []cli.Flag{
Name: "dns-search",
Usage: "Set custom DNS search domains",
},
- cli.StringFlag{
+ cli.StringSliceFlag{
Name: "entrypoint",
Usage: "Overwrite the default ENTRYPOINT of the image",
},
diff --git a/cmd/podman/create.go b/cmd/podman/create.go
index 340c036cc..f847b2d22 100644
--- a/cmd/podman/create.go
+++ b/cmd/podman/create.go
@@ -81,7 +81,7 @@ type createConfig struct {
DNSOpt []string //dns-opt
DNSSearch []string //dns-search
DNSServers []string //dns
- Entrypoint string //entrypoint
+ Entrypoint []string //entrypoint
Env map[string]string //env
ExposedPorts map[nat.Port]struct{}
GroupAdd []uint32 // group-add
@@ -419,14 +419,14 @@ func imageData(c *cli.Context, runtime *libpod.Runtime, image string) (string, s
// Parses CLI options related to container creation into a config which can be
// parsed into an OCI runtime spec
func parseCreateOpts(c *cli.Context, runtime *libpod.Runtime, imageName string, data *inspect.ImageData) (*createConfig, error) {
- var command []string
+ var inputCommand, command []string
var memoryLimit, memoryReservation, memorySwap, memoryKernel int64
var blkioWeight uint16
imageID := data.ID
if len(c.Args()) > 1 {
- command = c.Args()[1:]
+ inputCommand = c.Args()[1:]
}
sysctl, err := validateSysctl(c.StringSlice("sysctl"))
@@ -567,15 +567,24 @@ func parseCreateOpts(c *cli.Context, runtime *libpod.Runtime, imageName string,
workDir = data.Config.WorkingDir
}
- // COMMAND
- if len(command) == 0 {
- command = data.Config.Cmd
- }
-
// ENTRYPOINT
- entrypoint := c.String("entrypoint")
- if entrypoint == "" {
- entrypoint = strings.Join(data.Config.Entrypoint, " ")
+ // User input entrypoint takes priority over image entrypoint
+ entrypoint := c.StringSlice("entrypoint")
+ if len(entrypoint) == 0 {
+ entrypoint = data.Config.Entrypoint
+ }
+
+ // Build the command
+ // If we have an entry point, it goes first
+ if len(entrypoint) > 0 {
+ command = entrypoint
+ }
+ if len(inputCommand) > 0 {
+ // User command overrides data CMD
+ command = append(command, inputCommand...)
+ } else if len(data.Config.Cmd) > 0 && !c.IsSet("entrypoint") {
+ // If not user command, add CMD
+ command = append(command, data.Config.Cmd...)
}
// EXPOSED PORTS
diff --git a/cmd/podman/inspect.go b/cmd/podman/inspect.go
index ba7b17ed7..84107f3db 100644
--- a/cmd/podman/inspect.go
+++ b/cmd/podman/inspect.go
@@ -2,6 +2,7 @@ package main
import (
"encoding/json"
+ "strings"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors"
@@ -223,7 +224,7 @@ func getCtrInspectInfo(ctr *libpod.Container, ctrInspectData *inspect.ContainerI
OpenStdin: config.Stdin,
StopSignal: config.StopSignal,
Cmd: config.Spec.Process.Args,
- Entrypoint: createArtifact.Entrypoint,
+ Entrypoint: strings.Join(createArtifact.Entrypoint, " "),
},
}
return data, nil