diff --git a/loader/merge.go b/loader/merge.go index dd4fe429..78af4cfe 100644 --- a/loader/merge.go +++ b/loader/merge.go @@ -148,7 +148,11 @@ func toServicePortConfigsMap(s interface{}) (map[interface{}]interface{}, error) } m := map[interface{}]interface{}{} for _, p := range ports { - m[p.Published] = p + k := p.Published + if k == 0 { + k = p.Target + } + m[k] = p } return m, nil } diff --git a/loader/merge_test.go b/loader/merge_test.go index 1e9ea04b..7bc01776 100644 --- a/loader/merge_test.go +++ b/loader/merge_test.go @@ -306,6 +306,30 @@ func TestLoadMultipleServicePorts(t *testing.T) { }, }, }, + { + name: "override_one_sided", + portBase: map[string]interface{}{ + "ports": []interface{}{ + "5000", + "6000", + }, + }, + portOverride: map[string]interface{}{}, + expected: []types.ServicePortConfig{ + { + Mode: "ingress", + Published: 0, + Target: 5000, + Protocol: "tcp", + }, + { + Mode: "ingress", + Published: 0, + Target: 6000, + Protocol: "tcp", + }, + }, + }, } for _, tc := range portsCases {