Filter containers with no exposed ports unless they have a traefik.port label

This commit is contained in:
Erin Dachtler 2016-05-28 15:16:57 -07:00
parent 45589d5133
commit 53ae64e578
2 changed files with 18 additions and 4 deletions

View file

@ -196,11 +196,11 @@ func (provider *Docker) loadDockerConfig(containersInspected []dockertypes.Conta
} }
func containerFilter(container dockertypes.ContainerJSON) bool { func containerFilter(container dockertypes.ContainerJSON) bool {
if len(container.NetworkSettings.Ports) == 0 { _, err := strconv.Atoi(container.Config.Labels["traefik.port"])
log.Debugf("Filtering container without port %s", container.Name) if len(container.NetworkSettings.Ports) == 0 && err != nil {
log.Debugf("Filtering container without port and no traefik.port label %s", container.Name)
return false return false
} }
_, err := strconv.Atoi(container.Config.Labels["traefik.port"])
if len(container.NetworkSettings.Ports) > 1 && err != nil { 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) log.Debugf("Filtering container with more than 1 port and no traefik.port label %s", container.Name)
return false return false

View file

@ -250,6 +250,20 @@ func TestDockerGetPort(t *testing.T) {
// }, // },
// expected: "80", // expected: "80",
// }, // },
{
container: docker.ContainerJSON{
ContainerJSONBase: &docker.ContainerJSONBase{
Name: "test",
},
Config: &container.Config{
Labels: map[string]string{
"traefik.port": "8080",
},
},
NetworkSettings: &docker.NetworkSettings{},
},
expected: "8080",
},
{ {
container: docker.ContainerJSON{ container: docker.ContainerJSON{
ContainerJSONBase: &docker.ContainerJSONBase{ ContainerJSONBase: &docker.ContainerJSONBase{
@ -263,7 +277,7 @@ func TestDockerGetPort(t *testing.T) {
NetworkSettings: &docker.NetworkSettings{ NetworkSettings: &docker.NetworkSettings{
NetworkSettingsBase: docker.NetworkSettingsBase{ NetworkSettingsBase: docker.NetworkSettingsBase{
Ports: nat.PortMap{ Ports: nat.PortMap{
"80/tcp": {}, // TODO: Change so there is no exposed port "80/tcp": {},
}, },
}, },
}, },