diff --git a/bridge/bridge.go b/bridge/bridge.go index f02ca99c9..a052c68c1 100644 --- a/bridge/bridge.go +++ b/bridge/bridge.go @@ -266,7 +266,7 @@ func (b *Bridge) newService(port ServicePort, isgroup bool) *Service { port.HostIP = b.config.HostIp } - metadata, metadataFromPort := serviceMetaData(container.Config, port.ExposedPort) + metadata, metadataFromPort := serviceMetaData(container.Config, port) ignore := mapDefault(metadata, "ignore", "") if ignore != "" { diff --git a/bridge/util.go b/bridge/util.go index e3c295cfb..79956c5d9 100644 --- a/bridge/util.go +++ b/bridge/util.go @@ -54,7 +54,7 @@ func combineTags(tagParts ...string) []string { return tags } -func serviceMetaData(config *dockerapi.Config, port string) (map[string]string, map[string]bool) { +func serviceMetaData(config *dockerapi.Config, port ServicePort) (map[string]string, map[string]bool) { meta := config.Env for k, v := range config.Labels { meta = append(meta, k+"="+v) @@ -68,15 +68,28 @@ func serviceMetaData(config *dockerapi.Config, port string) (map[string]string, if metadataFromPort[key] { continue } - portkey := strings.SplitN(key, "_", 2) + portkey := strings.Split(key, "_") _, err := strconv.Atoi(portkey[0]) if err == nil && len(portkey) > 1 { - if portkey[0] != port { + if portkey[0] != port.ExposedPort { continue } - metadata[portkey[1]] = kvp[1] - metadataFromPort[portkey[1]] = true + + // SERVICE___ encodings + if len(portkey) > 2 { + if portkey[1] != port.PortType { + continue + } + + metadata[portkey[2]] = kvp[1] + metadataFromPort[portkey[2]] = true + } else { + // SERVICE__ encodings + metadata[portkey[1]] = kvp[1] + metadataFromPort[portkey[1]] = true + } } else { + // SERVICE_ encodings metadata[key] = kvp[1] } }