diff --git a/pkg/provider/docker/config.go b/pkg/provider/docker/config.go index dc7eb4f95..1f35e7897 100644 --- a/pkg/provider/docker/config.go +++ b/pkg/provider/docker/config.go @@ -345,7 +345,23 @@ func (p Provider) getIPAddress(ctx context.Context, container dockerData) string logger.Warnf("Unable to get IP address for container %s : Failed to inspect container ID %s, error: %s", container.Name, connectedContainer, err) return "" } - return p.getIPAddress(ctx, parseContainer(containerInspected)) + + // Check connected container for traefik.docker.network, falling back to + // the network specified on the current container. + containerParsed := parseContainer(containerInspected) + extraConf, err := p.getConfiguration(containerParsed) + + if err != nil { + logger.Warnf("Unable to get IP address for container %s : failed to get extra configuration for container %s: %s", container.Name, containerInspected.Name, err) + return "" + } + + if extraConf.Docker.Network == "" { + extraConf.Docker.Network = container.ExtraConf.Docker.Network + } + + containerParsed.ExtraConf = extraConf + return p.getIPAddress(ctx, containerParsed) } for _, network := range container.NetworkSettings.Networks {