diff --git a/daemon/create_unix.go b/daemon/create_unix.go index 1701fcfb5b..e10f9e4aab 100644 --- a/daemon/create_unix.go +++ b/daemon/create_unix.go @@ -23,6 +23,10 @@ func (daemon *Daemon) createContainerPlatformSpecificSettings(container *contain } defer daemon.Unmount(container) + if err := container.SetupWorkingDirectory(); err != nil { + return err + } + for spec := range config.Volumes { name := stringid.GenerateNonCryptoID() destination := filepath.Clean(spec) diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go index ba0a6bd626..92efc96a5c 100644 --- a/integration-cli/docker_cli_build_test.go +++ b/integration-cli/docker_cli_build_test.go @@ -6170,8 +6170,8 @@ func (s *DockerSuite) TestBuildBuildTimeArgExpansion(c *check.C) { if err != nil { c.Fatal(err) } - if res != wdVal { - c.Fatalf("Config.WorkingDir value mismatch. Expected: %s, got: %s", wdVal, res) + if res != filepath.Clean(wdVal) { + c.Fatalf("Config.WorkingDir value mismatch. Expected: %s, got: %s", filepath.Clean(wdVal), res) } err = inspectFieldAndMarshall(imgName, "Config.Env", &resArr) diff --git a/integration-cli/docker_cli_create_test.go b/integration-cli/docker_cli_create_test.go index 4cb1ed19a4..4bd90b0095 100644 --- a/integration-cli/docker_cli_create_test.go +++ b/integration-cli/docker_cli_create_test.go @@ -415,3 +415,11 @@ func (s *DockerSuite) TestCreateStopSignal(c *check.C) { c.Assert(res, checker.Contains, "9") } + +func (s *DockerSuite) TestCreateWithWorkdir(c *check.C) { + testRequires(c, DaemonIsLinux) + name := "foo" + dir := "/home/foo/bar" + dockerCmd(c, "create", "--name", name, "-w", dir, "busybox") + dockerCmd(c, "cp", fmt.Sprintf("%s:%s", name, dir), "/tmp") +}