浏览代码

Merge pull request #19155 from coolljt0725/create_cwd_on_create

Create the working directory on container creation
David Calavera 9 年之前
父节点
当前提交
a225e39667
共有 3 个文件被更改,包括 14 次插入2 次删除
  1. 4 0
      daemon/create_unix.go
  2. 2 2
      integration-cli/docker_cli_build_test.go
  3. 8 0
      integration-cli/docker_cli_create_test.go

+ 4 - 0
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)

+ 2 - 2
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)

+ 8 - 0
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")
+}