Create the working directory on container creation
| ... | ... |
@@ -23,6 +23,10 @@ func (daemon *Daemon) createContainerPlatformSpecificSettings(container *contain |
| 23 | 23 |
} |
| 24 | 24 |
defer daemon.Unmount(container) |
| 25 | 25 |
|
| 26 |
+ if err := container.SetupWorkingDirectory(); err != nil {
|
|
| 27 |
+ return err |
|
| 28 |
+ } |
|
| 29 |
+ |
|
| 26 | 30 |
for spec := range config.Volumes {
|
| 27 | 31 |
name := stringid.GenerateNonCryptoID() |
| 28 | 32 |
destination := filepath.Clean(spec) |
| ... | ... |
@@ -6170,8 +6170,8 @@ func (s *DockerSuite) TestBuildBuildTimeArgExpansion(c *check.C) {
|
| 6170 | 6170 |
if err != nil {
|
| 6171 | 6171 |
c.Fatal(err) |
| 6172 | 6172 |
} |
| 6173 |
- if res != wdVal {
|
|
| 6174 |
- c.Fatalf("Config.WorkingDir value mismatch. Expected: %s, got: %s", wdVal, res)
|
|
| 6173 |
+ if res != filepath.Clean(wdVal) {
|
|
| 6174 |
+ c.Fatalf("Config.WorkingDir value mismatch. Expected: %s, got: %s", filepath.Clean(wdVal), res)
|
|
| 6175 | 6175 |
} |
| 6176 | 6176 |
|
| 6177 | 6177 |
err = inspectFieldAndMarshall(imgName, "Config.Env", &resArr) |
| ... | ... |
@@ -415,3 +415,11 @@ func (s *DockerSuite) TestCreateStopSignal(c *check.C) {
|
| 415 | 415 |
c.Assert(res, checker.Contains, "9") |
| 416 | 416 |
|
| 417 | 417 |
} |
| 418 |
+ |
|
| 419 |
+func (s *DockerSuite) TestCreateWithWorkdir(c *check.C) {
|
|
| 420 |
+ testRequires(c, DaemonIsLinux) |
|
| 421 |
+ name := "foo" |
|
| 422 |
+ dir := "/home/foo/bar" |
|
| 423 |
+ dockerCmd(c, "create", "--name", name, "-w", dir, "busybox") |
|
| 424 |
+ dockerCmd(c, "cp", fmt.Sprintf("%s:%s", name, dir), "/tmp")
|
|
| 425 |
+} |