This is a networking problem. The traefik container cannot reach the destination container.
This is most likely the problem of the default or specific network defined for traefik and the destination container. Assume this compose file:
services:
app:
image: someImage
labels:
- "traefik.enable=true"
- "traefik.http.routers.myService.rule=Host(`myService.localhost`)"
- "traefik.http.services.myService.loadbalancer.server.port=80"
networks:
- reverse_proxy
reverse-proxy:
image: traefik:latest
build:
context: docker/traefik
ports:
# The HTTP port
- "80:80"
# The HTTPS port
- "443:443"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
networks:
- reverse_proxy
So you’d think your traefik default network configuration would look like this:
[providers.docker]
exposedByDefault = false
network = "reverse_proxy"
But you have to remember that Docker will create the ACTUAL network with the name of the folder in which you’re running (in case of docker-compose) or the stack name (in case of Docker swarm stack):
[providers.docker]
exposedByDefault = false
network = "myServiceFolderName_reverse_proxy"
To check the existing networks start your Docker composition or deploy your stack and check the existing networks:
docker network ls
NETWORK ID NAME DRIVER SCOPE
...
local
225ad63758e1 game_reverse_proxy bridge
...
(In this case the application is deployed via docker-compose and the “docker-compose up” command was fired inside a folder called “game”).