浏览代码

Expand mount source when type == bind

Signed-off-by: Joffrey F <[email protected]>
Joffrey F 7 年之前
父节点
当前提交
5c0a06475c
共有 2 个文件被更改,包括 24 次插入1 次删除
  1. 1 1
      compose/config/config.py
  2. 23 0
      tests/unit/config/config_test.py

+ 1 - 1
compose/config/config.py

@@ -1153,7 +1153,7 @@ def resolve_volume_paths(working_dir, service_dict):
 
 def resolve_volume_path(working_dir, volume):
     if isinstance(volume, dict):
-        if volume.get('source', '').startswith('.') and volume['type'] == 'mount':
+        if volume.get('source', '').startswith('.') and volume['type'] == 'bind':
             volume['source'] = expand_path(working_dir, volume['source'])
         return volume
 

+ 23 - 0
tests/unit/config/config_test.py

@@ -1304,6 +1304,29 @@ class ConfigTest(unittest.TestCase):
         assert npipe_mount.target == '/named_pipe'
         assert not npipe_mount.is_named_volume
 
+    def test_load_bind_mount_relative_path(self):
+        expected_source = 'C:\\tmp\\web' if IS_WINDOWS_PLATFORM else '/tmp/web'
+        base_file = config.ConfigFile(
+            'base.yaml', {
+                'version': '3.4',
+                'services': {
+                    'web': {
+                        'image': 'busybox:latest',
+                        'volumes': [
+                            {'type': 'bind', 'source': './web', 'target': '/web'},
+                        ],
+                    },
+                },
+            },
+        )
+
+        details = config.ConfigDetails('/tmp', [base_file])
+        config_data = config.load(details)
+        mount = config_data.services[0].get('volumes')[0]
+        assert mount.target == '/web'
+        assert mount.type == 'bind'
+        assert mount.source == expected_source
+
     def test_config_valid_service_names(self):
         for valid_name in ['_', '-', '.__.', '_what-up.', 'what_.up----', 'whatup']:
             services = config.load(