diff --git a/compose/service.py b/compose/service.py index 9f2fc68b4..fb51ef097 100644 --- a/compose/service.py +++ b/compose/service.py @@ -226,9 +226,20 @@ class Service(object): if num_running != len(all_containers): # we have some stopped containers, let's start them up again + stopped_containers = [ + c for c in all_containers if not c.is_running + ] + + # Remove containers that have diverged + divergent_containers = [ + c for c in stopped_containers if self._containers_have_diverged([c]) + ] stopped_containers = sorted( - (c for c in all_containers if not c.is_running), - key=attrgetter('number')) + set(stopped_containers) - set(divergent_containers), + key=attrgetter('number') + ) + for c in divergent_containers: + c.remove() num_stopped = len(stopped_containers)