Skip to content

Commit

Permalink
Inherit Cmd only if no --entrypoint specified on run
Browse files Browse the repository at this point in the history
Fixes #5147
Docker-DCO-1.1-Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com> (github: LK4D4)
  • Loading branch information
LK4D4 committed Aug 4, 2014
1 parent 1b6546b commit aa2d6db
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 5 deletions.
5 changes: 3 additions & 2 deletions builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ type buildFile struct {
outOld io.Writer
sf *utils.StreamFormatter

// cmdSet indicates is CMD was setted in current Dockerfile
// cmdSet indicates is CMD was set in current Dockerfile
cmdSet bool
}

Expand Down Expand Up @@ -202,7 +202,8 @@ func (b *buildFile) CmdRun(args string) error {
}

cmd := b.config.Cmd
b.config.Cmd = nil
// set Cmd manually, this is special case only for Dockerfiles
b.config.Cmd = config.Cmd
runconfig.Merge(b.config, config)

defer func(cmd []string) { b.config.Cmd = cmd }(cmd)
Expand Down
26 changes: 26 additions & 0 deletions integration-cli/docker_cli_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1454,3 +1454,29 @@ func TestCopyVolumeContent(t *testing.T) {
t.Fatal("Container failed to transfer content to volume")
}
}

func TestRunCleanupCmdOnEntrypoint(t *testing.T) {
name := "testrunmdcleanuponentrypoint"
defer deleteImages(name)
defer deleteAllContainers()
if _, err := buildImage(name,
`FROM busybox
ENTRYPOINT ["echo"]
CMD ["testingpoint"]`,
true); err != nil {
t.Fatal(err)
}
runCmd := exec.Command(dockerBinary, "run", "--entrypoint", "whoami", name)
out, exit, err := runCommandWithOutput(runCmd)
if err != nil {
t.Fatalf("Error: %v, out: %q", err, out)
}
if exit != 0 {
t.Fatalf("expected exit code 0 received %d, out: %q", exit, out)
}
out = strings.TrimSpace(out)
if out != "root" {
t.Fatalf("Expected output root, got %q", out)
}
logDone("run - cleanup cmd on --entrypoint")
}
6 changes: 3 additions & 3 deletions runconfig/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,10 @@ func Merge(userConf, imageConf *Config) error {
}
}

if len(userConf.Cmd) == 0 {
userConf.Cmd = imageConf.Cmd
}
if len(userConf.Entrypoint) == 0 {
if len(userConf.Cmd) == 0 {
userConf.Cmd = imageConf.Cmd
}
userConf.Entrypoint = imageConf.Entrypoint
}
if userConf.WorkingDir == "" {
Expand Down

0 comments on commit aa2d6db

Please sign in to comment.