diff options
author | baude <bbaude@redhat.com> | 2018-02-14 15:25:06 -0600 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-02-15 00:48:13 +0000 |
commit | e814936915d28286fa88f1211bc354687a358a7c (patch) | |
tree | ab08bd2f109f9ff9baa2bc7c8e0f65c7f94113af | |
parent | be9ed1cfacc19d1ad3c09e10481da445615b8b8e (diff) | |
download | podman-e814936915d28286fa88f1211bc354687a358a7c.tar.gz podman-e814936915d28286fa88f1211bc354687a358a7c.tar.bz2 podman-e814936915d28286fa88f1211bc354687a358a7c.zip |
No entrpoint, cmd, or command
When an image does not have an ENTRYPOINT nor a CMD and the
user does not provide a command in the CLI, we should fail
gracefully.
This resolves issue #328
Signed-off-by: baude <bbaude@redhat.com>
Closes: #333
Approved by: mheon
-rw-r--r-- | cmd/podman/create.go | 4 | ||||
-rw-r--r-- | test/e2e/run_entrypoint_test.go | 11 |
2 files changed, 15 insertions, 0 deletions
diff --git a/cmd/podman/create.go b/cmd/podman/create.go index 2012aa6de..5e2ea3969 100644 --- a/cmd/podman/create.go +++ b/cmd/podman/create.go @@ -587,6 +587,10 @@ func parseCreateOpts(c *cli.Context, runtime *libpod.Runtime, imageName string, command = append(command, data.ContainerConfig.Cmd...) } + if len(command) == 0 { + return nil, errors.Errorf("No command specified on command line or as CMD or ENTRYPOINT in this image") + } + // EXPOSED PORTS portBindings, err := exposedPorts(c, data.ContainerConfig.ExposedPorts) if err != nil { diff --git a/test/e2e/run_entrypoint_test.go b/test/e2e/run_entrypoint_test.go index 2ae282967..e06f8bb3a 100644 --- a/test/e2e/run_entrypoint_test.go +++ b/test/e2e/run_entrypoint_test.go @@ -28,6 +28,17 @@ var _ = Describe("Podman run entrypoint", func() { }) + It("podman run no command, entrypoint, or cmd", func() { + dockerfile := `FROM docker.io/library/alpine:latest +ENTRYPOINT [] +CMD [] +` + podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest") + session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(125)) + }) + It("podman run entrypoint", func() { dockerfile := `FROM docker.io/library/alpine:latest ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] |