Traefik - Невозможно выставить контейнеры Redis Docker с одним и тем же портом для разных доменов - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь настроить Redis с docker-compose для разных сред. Поэтому мне нужно выставить два домена с трафиком на один и тот же порт:

  • domain.com: 6379
  • domain-dev.com: 6379

Я не могу выставить эти порты в контейнере, потому что они работают на одном сервере.

Мой файл docker-compose (для домена-dev) выглядит так:

version: '2' 
services:
redis:
  container_name: redis-signalr-dev
image: redis
volumes:
  - ./redis-signalr-data:/data
restart: always
labels:
  - traefik.enable=true
  - traefik.backend=redis-signalr-dev
  - traefik.frontend.rule=Host:domain-dev.com
  - traefik.port=6379
  - traefik.docker.network=traefik_default
  - traefik.frontend.entryPoints=redis
networks:
  - traefik_default
volumes:
  redis-signalr-data:

networks: 
  traefik_default:
    external: true

Я также пытался настроить treafik для использования следующей конечной точки:

--entrypoints='Name:redis Address::6379'

При подключении к «domain-dev.com:6379» невозможно установить соединение.

Кто-нибудь знает решение этой проблемы?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Traefik 2.0 будет иметь поддержку TCP: https://github.com/containous/traefik/pull/4587

До этого вам приходилось использовать NGINX или подобное.

0 голосов
/ 28 августа 2018

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-запросы и выполняет маршрутизацию на основе заголовка узла.

...