Browse Source

Merge pull request #22094 from thaJeztah/autocreate-on-windows

Enable auto-creation of host-path on Windows
Alexander Morozov 9 năm trước cách đây
mục cha
commit
0b59ea60b2
1 tập tin đã thay đổi với 13 bổ sung13 xóa
  1. 13 13
      volume/volume.go

+ 13 - 13
volume/volume.go

@@ -3,10 +3,10 @@ package volume
 import (
 	"fmt"
 	"os"
-	"runtime"
 	"strings"
 
 	"github.com/docker/docker/pkg/stringid"
+	"github.com/docker/docker/pkg/system"
 )
 
 // DefaultDriverName is the driver name used for the driver
@@ -80,20 +80,20 @@ func (m *MountPoint) Setup() (string, error) {
 		}
 		return m.Volume.Mount(m.ID)
 	}
-	if len(m.Source) > 0 {
-		if _, err := os.Stat(m.Source); err != nil {
-			if !os.IsNotExist(err) {
-				return "", err
-			}
-			if runtime.GOOS != "windows" { // Windows does not have deprecation issues here
-				if err := os.MkdirAll(m.Source, 0755); err != nil {
-					return "", err
-				}
-			}
+	if len(m.Source) == 0 {
+		return "", fmt.Errorf("Unable to setup mount point, neither source nor volume defined")
+	}
+	// system.MkdirAll() produces an error if m.Source exists and is a file (not a directory),
+	// so first check if the path does not exist
+	if _, err := os.Stat(m.Source); err != nil {
+		if !os.IsNotExist(err) {
+			return "", err
+		}
+		if err := system.MkdirAll(m.Source, 0755); err != nil {
+			return "", err
 		}
-		return m.Source, nil
 	}
-	return "", fmt.Errorf("Unable to setup mount point, neither source nor volume defined")
+	return m.Source, nil
 }
 
 // Path returns the path of a volume in a mount point.