在 docker 上本地 运行 HAProxy 问题

Issue with running HAProxy locally on docker

我在 Docker 端口 3001 上本地有一个容器 运行 HAProxy 版本 2.0。 配置文件是:

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

我正在向端口 3000 发出邮递员 GET 并期望 HaProxy 重定向到本地端口 80 上我的服务器 "dummy"。但是我无法得到任何清晰的响应。感谢任何输入。

如果你 运行 容器像你一样,Docker 将在你的本地主机上分配一个随机端口并将流量路由到端口 3001。你可以通过 [=29 检查哪个端口=]ning 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 将流量路由到端口 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 访问您的应用程序。