Проблема с локальным запуском HAProxy на docker - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть контейнер, работающий под управлением HAProxy версии 2.0 локально на Docker порту 3001. Файл конфигурации:

global  
        debug  

defaults  
        log global  
        mode    http  
        timeout connect 50000
        timeout client 50000  
        timeout server 50000  

frontend main  
        bind *:3000
        default_backend app  

backend app  
        balance leastconn
        mode http  
        server dummy <localhostIP>:80

Docker файл:

FROM haproxy:2.0
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg

Docker Выполните команду:

docker run -p3001 --name my-running-haproxy my-haproxy

Я отправляю почтальон GET на порт 3000 и ожидаю, что HaProxy перенаправит на мой сервер «фиктивный» на локальный порт 80. Но я не могу получить какой-либо разборчивый ответ. Цените любые входные данные.

1 Ответ

2 голосов
/ 11 февраля 2020

Если вы запустите контейнер так же, как вы, Docker назначит случайный порт на вашем локальном хосте и отправит трафик c на порт 3001. Вы можете проверить, какой это порт, запустив docker ps после того, как вы запустили контейнер и глядя на раздел PORTS:

CONTAINER ID        IMAGE               COMMAND                   CREATED           STATUS              PORTS                      NAMES
6b502af649be        my-haproxy           "/docker-entrypoint.…"   1 minute ago      Up 47 minutes       0.0.0.0:32769->3001/tcp    upbeat_shtern

Итак, в моем примере вы можете получить доступ к вашему приложению через порт 32769, но это число является случайным.

Имейте в виду, что в вашем примере Docker маршрутизирует трафик c на порт 3001, тогда как вы настроили HAProxy для привязки к порту 3000. По крайней мере, вам нужно изменить команду docker run к следующему:

docker run -p3000 --name my-running-haproxy my-haproxy

Но обычно вы хотите иметь фиксированный порт на локальном хосте, например, порт 80. Запустите ваш контейнер следующим образом:

docker run -p 80:3000 --name my-running-haproxy my-haproxy

Теперь вы можете получить доступ к вашему заявлению на localhost:80.

...