转发域到docker集装箱

我想转发请求 (通过域名)从公共IPdocker集装箱 。 我的networking如下所示: 网络方案。

它应该像这样工作:
first.com – >“第一”容器,172.17.0.2/16
mail.first.com – >“first-mail”容器,172.17.0.3/16
second.com – >“第二”容器,172.17.0.4/16

但是我只有转发端口的经验。 我想我需要一个条件转发依赖于互联网请求的域名信息 。 这样的路由器的东西:

if(request.DomainName == "*.first.com" || request.DomainName == "*.second.com" { forward(request, "10.0.0.10"); } 

和“Docker主机”机器类似。

但是我找不到这个转发的例子。 我误解了它应该如何?

如果我们正在谈论域名 – 我们主要讨论的是http \ https协议转发,但是Docker(docker-proxy服务)则是关于处理低层协议 – TCP \ UDP。 这意味着 – 我们需要设置http \ HTTPS代理,这将接近我们的请求到容器。

有一个很好的解决scheme – jwilder的Nginx-Proxy – 完全自动化的基于docker的 nginx-proxy。 看看docker-compose的例子:运行jwilder的容器后,你只需要添加

VIRTUAL_HOST = first.com

到第一个容器的环境variables,并删除http \ https端口转发到主机。