Filter containers with no exposed ports unless they have a traefik.port label
This commit is contained in:
parent
45589d5133
commit
53ae64e578
2 changed files with 18 additions and 4 deletions
|
@ -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
|
||||||
|
|
|
@ -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": {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue