mirror of https://github.com/docker/compose.git
fix(containers): fix sorting logic by adding secondary sorting for one-off containers
Signed-off-by: Suleiman Dibirov <idsulik@gmail.com>
This commit is contained in:
parent
06bf339a42
commit
4f9db4d3e6
|
@ -93,10 +93,19 @@ func (s *composeService) getSpecifiedContainer(ctx context.Context, projectName
|
||||||
}
|
}
|
||||||
return moby.Container{}, fmt.Errorf("service %q is not running", serviceName)
|
return moby.Container{}, fmt.Errorf("service %q is not running", serviceName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sort by container number first, then put one-off containers at the end
|
||||||
sort.Slice(containers, func(i, j int) bool {
|
sort.Slice(containers, func(i, j int) bool {
|
||||||
x, _ := strconv.Atoi(containers[i].Labels[api.ContainerNumberLabel])
|
numberLabelX, _ := strconv.Atoi(containers[i].Labels[api.ContainerNumberLabel])
|
||||||
y, _ := strconv.Atoi(containers[j].Labels[api.ContainerNumberLabel])
|
numberLabelY, _ := strconv.Atoi(containers[j].Labels[api.ContainerNumberLabel])
|
||||||
return x < y
|
IsOneOffLabelTrueX := containers[i].Labels[api.OneoffLabel] == "True"
|
||||||
|
IsOneOffLabelTrueY := containers[j].Labels[api.OneoffLabel] == "True"
|
||||||
|
|
||||||
|
if numberLabelX == numberLabelY {
|
||||||
|
return !IsOneOffLabelTrueX && IsOneOffLabelTrueY
|
||||||
|
}
|
||||||
|
|
||||||
|
return numberLabelX < numberLabelY
|
||||||
})
|
})
|
||||||
container := containers[0]
|
container := containers[0]
|
||||||
return container, nil
|
return container, nil
|
||||||
|
|
Loading…
Reference in New Issue