golang docker容器的反向代理

时间:2016-08-15 12:46:39

标签: nginx docker reverse-proxy docker-compose

我有三个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地址查询所有端点吗?例如:

如果我卷曲: http://myservice/1/*请求应该转到first_service http://myservice/2/*请求应该转到second_service,依此类推。

我意识到我可能需要创建某种反向代理。但我无法找到如何使用docker-compose进行配置并正确进行端口映射。我想要一个适用于docker 1.12的解决方案,最好是。 docker中的服务发现可能是一个相关主题。但我无法让这个工作,因为我是nginx的新手,服务发现等等。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

使用nginx-reverse-proxy。

它允许您根据虚拟主机引导流量。

自动化所有内容的好工具是jwilder / nginx-proxy https://github.com/jwilder/nginx-proxy

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

祝你好运!