diff --git a/provider/docker.go b/provider/docker.go index cd5ddc847..faff0b6d2 100644 --- a/provider/docker.go +++ b/provider/docker.go @@ -364,10 +364,6 @@ func (provider *Docker) containerFilter(container dockerData) bool { log.Debugf("Filtering container without port and no traefik.port label %s", container.Name) return false } - if len(container.NetworkSettings.Ports) > 1 && err != nil { - log.Debugf("Filtering container with more than 1 port and no traefik.port label %s", container.Name) - return false - } if !isContainerEnabled(container, provider.ExposedByDefault) { log.Debugf("Filtering disabled container %s", container.Name) diff --git a/provider/docker_test.go b/provider/docker_test.go index 3d106bd71..1873c5d56 100644 --- a/provider/docker_test.go +++ b/provider/docker_test.go @@ -390,6 +390,27 @@ func TestDockerGetPort(t *testing.T) { }, expected: "8080", }, + { + container: docker.ContainerJSON{ + ContainerJSONBase: &docker.ContainerJSONBase{ + Name: "test-multi-ports", + }, + Config: &container.Config{ + Labels: map[string]string{ + "traefik.port": "8080", + }, + }, + NetworkSettings: &docker.NetworkSettings{ + NetworkSettingsBase: docker.NetworkSettingsBase{ + Ports: nat.PortMap{ + "8080/tcp": {}, + "80/tcp": {}, + }, + }, + }, + }, + expected: "8080", + }, } for _, e := range containers { @@ -735,7 +756,7 @@ func TestDockerTraefikFilter(t *testing.T) { { container: docker.ContainerJSON{ ContainerJSONBase: &docker.ContainerJSONBase{ - Name: "container", + Name: "container-multi-ports", }, Config: &container.Config{}, NetworkSettings: &docker.NetworkSettings{ @@ -748,7 +769,7 @@ func TestDockerTraefikFilter(t *testing.T) { }, }, exposedByDefault: true, - expected: false, + expected: true, }, { container: docker.ContainerJSON{ diff --git a/provider/mesos.go b/provider/mesos.go index 4064c1671..a99318249 100644 --- a/provider/mesos.go +++ b/provider/mesos.go @@ -212,10 +212,6 @@ func mesosTaskFilter(task state.Task, exposedByDefaultFlag bool) bool { log.Debugf("Filtering mesos task %s specifying both traefik.portIndex and traefik.port labels", task.Name) return false } - if portIndexLabel == "" && portValueLabel == "" && len(task.DiscoveryInfo.Ports.DiscoveryPorts) > 1 { - log.Debugf("Filtering mesos task %s with more than 1 port and no traefik.portIndex or traefik.port label", task.Name) - return false - } if portIndexLabel != "" { index, err := strconv.Atoi(labels(task, "traefik.portIndex")) if err != nil || index < 0 || index > len(task.DiscoveryInfo.Ports.DiscoveryPorts)-1 { diff --git a/provider/mesos_test.go b/provider/mesos_test.go index 5968db8e9..5434915b3 100644 --- a/provider/mesos_test.go +++ b/provider/mesos_test.go @@ -95,7 +95,7 @@ func TestMesosTaskFilter(t *testing.T) { setLabels("traefik.enable", "true"), discovery(setDiscoveryPorts("TCP", 80, "WEB HTTP", "TCP", 443, "WEB HTTPS")), ), - expected: false, // more than 1 discovery port but no traefik.port* label + expected: true, // Default to first index exposedByDefault: true, }, {