Traefik v2 listen on port

I am using Traefik v2 with Docker Swarm. I want to achieve the following routing:

  1. mydomain.com:9000 -> Traefik dashboard
  2. mydomain.com:5000 -> my application

docker-compose-traefik.yml

version: "3.7"

services:
  traefik:
    image: "traefik:v2.0"
    networks:
      - traefik-net
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker.swarmMode=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:5000"
    ports:
      - "80:80"
      - "9000:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

networks:
  traefik-net:
    external:
      name: traefik-net

docker-compose-whoami.yml

version: "3.7"

services:
  whoami:
    image: "jwilder/whoami"
    networks:
      - traefik-net
    deploy:
      replicas: 3
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.whoami.rule=Host(`mydomain.com`)"
        - "traefik.http.routers.whoami.entrypoints=web"
        - "traefik.http.services.whoami.loadbalancer.server.port=8000"

networks:
  traefik-net:
    external:
      name: traefik-net

jwilder/whoami exposes port 8000 in its Dockerfile. I want to redirect port 5000 (my entrypoint defined in docker-compose-traefik.yml) to port 8000 in container.

I created network traefik-net with: docker network create -d bridge traefik-net.

I deployed both stacks with:

  1. docker-stack deploy -c docker-compose-traefik.yml Traefik
  2. docker-stack deploy -c docker-compose-whoami.yml Whoami

When I visit mydomain.com:9000 it opens Traefik dashboard as it should. When I visit mydomain.com:5000 it says that “This site can’t be reached”.

My question is: How to redirect request to port 5000 (mydomain.com:5000) to port 8000 inside whoami container?

Source: StackOverflow