Use first index for ports
This commit is contained in:
parent
5641af437e
commit
85a20b9a39
4 changed files with 24 additions and 11 deletions
|
@ -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)
|
||||||
|
|
|
@ -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{
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue