diff --git a/builder/internals.go b/builder/internals.go index 2aa747f194..692f8f2094 100644 --- a/builder/internals.go +++ b/builder/internals.go @@ -532,9 +532,13 @@ func (b *Builder) create() (*daemon.Container, error) { b.TmpContainers[c.ID] = struct{}{} fmt.Fprintf(b.OutStream, " ---> Running in %s\n", utils.TruncateID(c.ID)) - // override the entry point that may have been picked up from the base image - c.Path = config.Cmd[0] - c.Args = config.Cmd[1:] + if config.Cmd != nil { + // override the entry point that may have been picked up from the base image + c.Path = config.Cmd[0] + c.Args = config.Cmd[1:] + } else { + config.Cmd = []string{} + } return c, nil } diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index 927ab07324..ffc7594d0e 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -22,6 +22,25 @@ import ( "github.com/docker/docker/pkg/archive" ) +func TestBuildJSONEmptyRun(t *testing.T) { + name := "testbuildjsonemptyrun" + defer deleteImages(name) + + _, err := buildImage( + name, + ` + FROM busybox + RUN [] + `, + true) + + if err != nil { + t.Fatal("error when dealing with a RUN statement with empty JSON array") + } + + logDone("build - RUN with an empty array should not panic") +} + func TestBuildEmptyWhitespace(t *testing.T) { name := "testbuildemptywhitespace" defer deleteImages(name)