mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Combine SetupWorkingDirectory for Linux and Windows
Signed-off-by: Darren Stahl <darst@microsoft.com>
This commit is contained in:
parent
3dd01713d8
commit
ec31741ca1
4 changed files with 30 additions and 35 deletions
|
@ -22,6 +22,7 @@ import (
|
|||
"github.com/docker/docker/pkg/promise"
|
||||
"github.com/docker/docker/pkg/signal"
|
||||
"github.com/docker/docker/pkg/symlink"
|
||||
"github.com/docker/docker/pkg/system"
|
||||
"github.com/docker/docker/runconfig"
|
||||
"github.com/docker/docker/volume"
|
||||
containertypes "github.com/docker/engine-api/types/container"
|
||||
|
@ -183,6 +184,34 @@ func (container *Container) WriteHostConfig() error {
|
|||
return json.NewEncoder(f).Encode(&container.HostConfig)
|
||||
}
|
||||
|
||||
// SetupWorkingDirectory sets up the container's working directory as set in container.Config.WorkingDir
|
||||
func (container *Container) SetupWorkingDirectory() error {
|
||||
if container.Config.WorkingDir == "" {
|
||||
return nil
|
||||
}
|
||||
container.Config.WorkingDir = filepath.Clean(container.Config.WorkingDir)
|
||||
|
||||
pth, err := container.GetResourcePath(container.Config.WorkingDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pthInfo, err := os.Stat(pth)
|
||||
if err != nil {
|
||||
if !os.IsNotExist(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := system.MkdirAll(pth, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if pthInfo != nil && !pthInfo.IsDir() {
|
||||
return derr.ErrorCodeNotADir.WithArgs(container.Config.WorkingDir)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetResourcePath evaluates `path` in the scope of the container's BaseFS, with proper path
|
||||
// sanitisation. Symlinks are all scoped to the BaseFS of the container, as
|
||||
// though the container's BaseFS was `/`.
|
||||
|
|
|
@ -398,34 +398,6 @@ func (container *Container) BuildCreateEndpointOptions(n libnetwork.Network, epC
|
|||
return createOptions, nil
|
||||
}
|
||||
|
||||
// SetupWorkingDirectory sets up the container's working directory as set in container.Config.WorkingDir
|
||||
func (container *Container) SetupWorkingDirectory() error {
|
||||
if container.Config.WorkingDir == "" {
|
||||
return nil
|
||||
}
|
||||
container.Config.WorkingDir = filepath.Clean(container.Config.WorkingDir)
|
||||
|
||||
pth, err := container.GetResourcePath(container.Config.WorkingDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pthInfo, err := os.Stat(pth)
|
||||
if err != nil {
|
||||
if !os.IsNotExist(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := system.MkdirAll(pth, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if pthInfo != nil && !pthInfo.IsDir() {
|
||||
return derr.ErrorCodeNotADir.WithArgs(container.Config.WorkingDir)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// appendNetworkMounts appends any network mounts to the array of mount points passed in
|
||||
func appendNetworkMounts(container *Container, volumeMounts []volume.MountPoint) ([]volume.MountPoint, error) {
|
||||
for _, mnt := range container.NetworkMounts() {
|
||||
|
|
|
@ -22,12 +22,6 @@ func (container *Container) CreateDaemonEnvironment(linkedEnv []string) []string
|
|||
return container.Config.Env
|
||||
}
|
||||
|
||||
// SetupWorkingDirectory initializes the container working directory.
|
||||
// This is a NOOP In windows.
|
||||
func (container *Container) SetupWorkingDirectory() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// UnmountIpcMounts unmount Ipc related mounts.
|
||||
// This is a NOOP on windows.
|
||||
func (container *Container) UnmountIpcMounts(unmount func(pth string) error) {
|
||||
|
|
|
@ -1701,7 +1701,7 @@ func (s *DockerSuite) TestRunWorkdirExistsAndIsFile(c *check.C) {
|
|||
expected := "Cannot mkdir: /bin/cat is not a directory"
|
||||
if daemonPlatform == "windows" {
|
||||
existingFile = `\windows\system32\ntdll.dll`
|
||||
expected = "The directory name is invalid"
|
||||
expected = `Cannot mkdir: \windows\system32\ntdll.dll is not a directory.`
|
||||
}
|
||||
|
||||
out, exitCode, err := dockerCmdWithError("run", "-w", existingFile, "busybox")
|
||||
|
|
Loading…
Reference in a new issue