From d980d170a6a58df573c0b78211fd35a9d33286a2 Mon Sep 17 00:00:00 2001 From: Collins Abitekaniza Date: Sat, 8 Dec 2018 13:48:05 +0300 Subject: [PATCH] error on duplicate mount points Signed-off-by: Collins Abitekaniza --- compose/config/config.py | 12 ++++++++++++ compose/service.py | 1 + 2 files changed, 13 insertions(+) diff --git a/compose/config/config.py b/compose/config/config.py index 0298b4e2d..59c76680b 100644 --- a/compose/config/config.py +++ b/compose/config/config.py @@ -8,6 +8,7 @@ import os import string import sys from collections import namedtuple +from operator import itemgetter, attrgetter import six import yaml @@ -835,6 +836,17 @@ def finalize_service_volumes(service_dict, environment): finalized_volumes.append(MountSpec.parse(v, normalize, win_host)) else: 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 return service_dict diff --git a/compose/service.py b/compose/service.py index f6dfa7c72..964ab0193 100644 --- a/compose/service.py +++ b/compose/service.py @@ -9,6 +9,7 @@ import sys from collections import namedtuple from collections import OrderedDict from operator import attrgetter +from operator import itemgetter import enum import six