反向代理golang docker容器

我有三个docker集装箱,每个集装箱都有一个用golang实现的HTTP端点。

我通过一个docker-compose.yml文件启动他们三个,比如:

 version: '2' services: first_service: build: api/firstService second_service: build: api/secondService third_service: build: api/thirdService 

每个服务公开的端点是唯一的。 例如:first_service监听/ 1 / api; second_service监听/ 2 / api; third_service监听/ 3 / api

所有这三个容器都在80端口提供服务。

有没有办法让我查询所有的端点使用单个IP地址? 例如:

如果我curl: http://myservice/1/*请求应该去first_service http://myservice/2/*请求应该去second_service等等。

我意识到我可能不得不创build某种反向代理。 但是我无法find如何使用docker-compose进行configuration,并正确地进行端口映射。 我想要一个解决scheme,与docker1.12起,最好。 Docker中的服务发现可能是一个相关的主题。 但我无法得到这个工作,因为我是nginx新手,服务发现等任何帮助吗?

使用nginx-reverse-proxy。

它将允许您根据虚拟主机来引导您的stream量。

自动化一切的好工具是jwilder / nginx-proxy https://github.com/jwilder/nginx-proxy

一个很好的博客展示了如何以最好的方式实现这个的详细用法是https://blog.florianlopes.io/host-multiple-websites-on-single-host-docker/

祝你好运!