diff --git a/cli/command/stack/kubernetes/services.go b/cli/command/stack/kubernetes/services.go index 5a1db529dda1..9cf89f4f0fa8 100644 --- a/cli/command/stack/kubernetes/services.go +++ b/cli/command/stack/kubernetes/services.go @@ -24,11 +24,14 @@ var supportedServicesFilters = map[string]bool{ func generateSelector(labels map[string][]string) []string { var result []string for k, v := range labels { - for _, val := range v { - result = append(result, fmt.Sprintf("%s=%s", k, val)) - } - if len(v) == 0 { + switch len(v) { + case 0: result = append(result, k) + case 1: + result = append(result, fmt.Sprintf("%s=%s", k, v[0])) + default: + sort.Strings(v) + result = append(result, fmt.Sprintf("%s in (%s)", k, strings.Join(v, ","))) } } return result diff --git a/cli/command/stack/kubernetes/services_test.go b/cli/command/stack/kubernetes/services_test.go index 41a3348e0b09..9537f203f98e 100644 --- a/cli/command/stack/kubernetes/services_test.go +++ b/cli/command/stack/kubernetes/services_test.go @@ -75,8 +75,7 @@ func TestServiceFiltersLabelSelectorGen(t *testing.T) { ), expectedSelectorParts: []string{ "com.docker.stack.namespace=test", - "label1=test", - "label1=test2", + "label1 in (test,test2)", }, }, {