自动附加docker容器到nginx负载均衡器的上游配置

我正在运行Docker Compose(v2)并且有一个节点服务(网站)和基于python的api,并且nginx部署在它们前面。

我想要做的一件事是能够通过添加更多容器来扩展服务。 如果事先知道有多少个容器,我可以使用对docker提供的容器IP的引用对nginx上游配置进行硬编码。 然而,问题是我希望上游nginx配置是动态的,例如,如果我添加另一个Docker容器,它只是添加容器的位置到上游块中上游IP列表。

我的想法是创建一个脚本,它会在容器更改时自动附加使用env变量的上游服务器,但我不确定从哪里开始并找不到一个好例子。


有几个方法可以实现这一点。 你所指的通常称为服务发现,并以多种形式出现。 我会描述我以前使用过的其中两个。

第一个也是最简单的(对单个服务器工作正常,或者只在一台服务器上本地发现容器)是一个使用Docker套接字或API的本地代理。 https://github.com/jwilder/nginx-proxy是最流行的版本之一,应该可以在Compose中为原型化可伸缩服务工作。

另一种方式(更多的多主机友好但更复杂的方法)是在注册表(如etcd或Consul)中注册服务,然后动态写出配置。 为此,您可以使用注册系统(例如https://github.com/gliderlabs/registrator)来注册容器及其端口。 然后,您的代理或应用程序可以使用像https://github.com/kelseyhightower/confd这样的模板系统写出配置文件。

链接地址: http://www.djcxy.com/p/91421.html

上一篇: Automatically append docker container to upstream config of nginx load balancer

下一篇: How to add a side column to the navbar when its viewed on mobile bootstrap