瀏覽代碼

error on duplicate mount points

Signed-off-by: Collins Abitekaniza <[email protected]>
Collins Abitekaniza 6 年之前
父節點
當前提交
d980d170a6
共有 2 個文件被更改,包括 13 次插入0 次删除
  1. 12 0
      compose/config/config.py
  2. 1 0
      compose/service.py

+ 12 - 0
compose/config/config.py

@@ -8,6 +8,7 @@ import os
 import string
 import string
 import sys
 import sys
 from collections import namedtuple
 from collections import namedtuple
+from operator import itemgetter, attrgetter
 
 
 import six
 import six
 import yaml
 import yaml
@@ -835,6 +836,17 @@ def finalize_service_volumes(service_dict, environment):
                 finalized_volumes.append(MountSpec.parse(v, normalize, win_host))
                 finalized_volumes.append(MountSpec.parse(v, normalize, win_host))
             else:
             else:
                 finalized_volumes.append(VolumeSpec.parse(v, normalize, win_host))
                 finalized_volumes.append(VolumeSpec.parse(v, normalize, win_host))
+
+        duplicate_mounts = []
+        mounts = [v.as_volume_spec() if isinstance(v, MountSpec) else v for v in finalized_volumes]
+        for mount in mounts:
+            if list(map(attrgetter('internal'), mounts)).count(mount.internal) > 1:
+                duplicate_mounts.append(mount.repr())
+
+        if duplicate_mounts:
+            raise ConfigurationError("Duplicate mount points: volumes [%s]" % (
+                ', '.join(duplicate_mounts)))
+        
         service_dict['volumes'] = finalized_volumes
         service_dict['volumes'] = finalized_volumes
 
 
     return service_dict
     return service_dict

+ 1 - 0
compose/service.py

@@ -9,6 +9,7 @@ import sys
 from collections import namedtuple
 from collections import namedtuple
 from collections import OrderedDict
 from collections import OrderedDict
 from operator import attrgetter
 from operator import attrgetter
+from operator import itemgetter
 
 
 import enum
 import enum
 import six
 import six