Use first index for ports

This commit is contained in:
Guilhem Lettron 2016-11-02 17:31:27 +01:00
parent 5641af437e
commit 85a20b9a39
4 changed files with 24 additions and 11 deletions

View file

@ -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) log.Debugf("Filtering container without port and no traefik.port label %s", container.Name)
return false 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) { if !isContainerEnabled(container, provider.ExposedByDefault) {
log.Debugf("Filtering disabled container %s", container.Name) log.Debugf("Filtering disabled container %s", container.Name)

View file

@ -390,6 +390,27 @@ func TestDockerGetPort(t *testing.T) {
}, },
expected: "8080", 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 { for _, e := range containers {
@ -735,7 +756,7 @@ func TestDockerTraefikFilter(t *testing.T) {
{ {
container: docker.ContainerJSON{ container: docker.ContainerJSON{
ContainerJSONBase: &docker.ContainerJSONBase{ ContainerJSONBase: &docker.ContainerJSONBase{
Name: "container", Name: "container-multi-ports",
}, },
Config: &container.Config{}, Config: &container.Config{},
NetworkSettings: &docker.NetworkSettings{ NetworkSettings: &docker.NetworkSettings{
@ -748,7 +769,7 @@ func TestDockerTraefikFilter(t *testing.T) {
}, },
}, },
exposedByDefault: true, exposedByDefault: true,
expected: false, expected: true,
}, },
{ {
container: docker.ContainerJSON{ container: docker.ContainerJSON{

View file

@ -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) log.Debugf("Filtering mesos task %s specifying both traefik.portIndex and traefik.port labels", task.Name)
return false 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 != "" { if portIndexLabel != "" {
index, err := strconv.Atoi(labels(task, "traefik.portIndex")) index, err := strconv.Atoi(labels(task, "traefik.portIndex"))
if err != nil || index < 0 || index > len(task.DiscoveryInfo.Ports.DiscoveryPorts)-1 { if err != nil || index < 0 || index > len(task.DiscoveryInfo.Ports.DiscoveryPorts)-1 {

View file

@ -95,7 +95,7 @@ func TestMesosTaskFilter(t *testing.T) {
setLabels("traefik.enable", "true"), setLabels("traefik.enable", "true"),
discovery(setDiscoveryPorts("TCP", 80, "WEB HTTP", "TCP", 443, "WEB HTTPS")), 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, exposedByDefault: true,
}, },
{ {