diff --git a/cli/compose/loader/merge.go b/cli/compose/loader/merge.go index a321fd18c..002b4c776 100644 --- a/cli/compose/loader/merge.go +++ b/cli/compose/loader/merge.go @@ -116,7 +116,11 @@ func toServicePortConfigsMap(s any) (map[any]any, error) { } m := map[any]any{} for _, p := range ports { - m[p.Published] = p + protocol := "tcp" + if p.Protocol != "" { + protocol = p.Protocol + } + m[fmt.Sprintf("%d%s", p.Published, protocol)] = p } return m, nil } diff --git a/cli/compose/loader/merge_test.go b/cli/compose/loader/merge_test.go index 40445d6c4..fbe987310 100644 --- a/cli/compose/loader/merge_test.go +++ b/cli/compose/loader/merge_test.go @@ -848,6 +848,8 @@ func TestLoadMultipleConfigs(t *testing.T) { "ports": []any{ "8080:80", "9090:90", + "53:53/tcp", + "53:53/udp", }, "labels": []any{ "foo=bar", @@ -925,6 +927,18 @@ func TestLoadMultipleConfigs(t *testing.T) { }, }, Ports: []types.ServicePortConfig{ + { + Mode: "ingress", + Target: 53, + Published: 53, + Protocol: "tcp", + }, + { + Mode: "ingress", + Target: 53, + Published: 53, + Protocol: "udp", + }, { Target: 81, Published: 8080,