Traefik - это обратный прокси-сервер для http, а не балансировщик нагрузки tcp. Таким образом, сам traefik (обычно) открывает порты 80 и 443 для входа и перенаправляет входящие HTTP-запросы в указанные http-способные серверные части. Порт, указанный в метках службы compose, является портом контейнера, на который должен передаваться трафик.
Таким образом, если вы запустите сервер nodejs (http) на порту 3000, вы подключитесь к http://yourdomain:80
, и traefik перенаправит запросы в ваш контейнер nodejs на порт 3000. Это означает, что, указав порт в службе compose, вы не откроете этот порт на своем хосте.
В вашем примере, выполняющем redis со своим пользовательским протоколом, traefik не является решением, так как traefik выполняет только проксирование http. Чтобы открыть redis на вашем хосте (если вы действительно хотите это сделать), просто используйте обычные сопоставления портов док-станции и укажите свои домены для ваших док-хостов. При этом невозможно использовать один и тот же порт с разными доменами, просто укажите два разных порта для обоих экземпляров. Для http это работает, когда traefik проверяет http-запросы и выполняет маршрутизацию на основе заголовка узла.