Traefik as reverse-proxy in front of 2 docker containers exposing one port each

Hi @Twisterking,

Thanks for your interest in Traefik!

First, you have mixed Traefik v1 and v2 configuration in the entrypoint configuration. The Traefik container configuration should look like the following (I've also removed some unnecessary configurations).

Is it normal that there is no entrypoint attached to port 443?

traefik:
    image: traefik:v2.3
    container_name: traefik
    networks:
      - frontend
      - backend
    command:
      - --entrypoints.web.address=:80
      - --providers.docker.network=backend
      - --providers.docker.exposedbydefault=false
      - --api.insecure=true
      - --accesslog.filepath=/var/log/traefik_access.log
      - --log.filepath=/var/log/traefik.log
      - --log.level=DEBUG
    ports:
      - 80:80
      - 8080:8080
      - 443:443
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - loadbalancerdata:/data
    deploy:
      restart_policy:
        condition: on-failure

Then, if you want to load balance all the incoming traffic on port 80 (web) to your app containers you will have to configure the same router and service on your apps. Something like:

app-test-1:
    build:
      context: /opt/my-app
      dockerfile: ~/scripts/docker/Dockerfile
    image: myapp:build1
    container_name: app-test-1
    networks:
      - backend
    environment:
      - PORT=3000
      - METEOR_SETTINGS
    ports:
      - 3000:3000
    labels:
      - traefik.enable=true
      - traefik.docker.network=backend
      - traefik.http.routers.app-test.rule=Host(`test.mydomain.com`)
      - traefik.http.routers.app-test.entrypoints=web
      - traefik.http.services.app-test.loadbalancer.server.port=3000
      - traefik.http.services.app-test.loadbalancer.sticky=true

  app-test-2:
    build:
      context: /opt/my-app
      dockerfile: ~/scripts/docker/Dockerfile
    image: myapp:build1
    container_name: app-test-2
    networks:
      - backend
    environment:
      - PORT=3002
      - METEOR_SETTINGS
    ports:
      - 3002:3002
    labels:
      - traefik.enable=true
      - traefik.docker.network=backend
      - traefik.http.routers.app-test.rule=Host(`test.mydomain.com`)
      - traefik.http.routers.app-test.entrypoints=web
      - traefik.http.services.app-test.loadbalancer.server.port=3002
      - traefik.http.services.app-test.loadbalancer.sticky=true

As a side note, if your apps are the same maybe you could look at the docker-compose scale option. By doing that, you will have to configure your app router and service only once and leverage docker-compose to scale your service.

Hope this helps!