使用 nginx 作为反向代理和负载均衡器,有没有办法在使用 docker-compose 时自动检测新的容器实例?
Using nginx as a reverse proxy and load balancer, is there a way to automatically detect new container instances when using docker-compose?
我有一个 docker-compose 设置,其中一个 nginx 容器用作构成我的应用程序的其余容器的反向代理和负载平衡器。
我可以使用 docker-compose up -d
启动应用程序,一切正常。然后,我可以使用 docker-compose up -d --scale auth=3
扩展我的一项服务,并且一切继续正常工作。
唯一的问题是 nginx 还不知道这两个新实例,所以我需要使用 docker exec revproxy nginx -s reload
、"revproxy" 手动重启 运行 容器内的 nginx 进程作为 nginx 容器的名称。
太好了,当我决定扩展我的一项服务时,我不介意 运行 额外的命令。但真正的问题是当某处出现容器故障时...... nginx 需要在这种情况发生时立即知道停止向故障实例发送流量,直到 Docker 引擎能够用健康的引擎替换它。
综上所述,基本上我想完成他们在 Traefik quickstart tutorial 中所做的事情,除了我想坚持使用 nginx 作为我的反向代理。
虽然我个人认为 Traefik 在你的情况下会真正节省时间,但还有另一个项目可以用 nginx 做你想做的事情:jwilder/nginx-proxy。
它通过侦听 docker 引擎事件来工作,当添加或删除容器时,它会使用模板更新 nginx 配置。
您可以按原样使用此 jwilder/nginx-proxy
docker 图像,或者您也可以使用 jwilder/docker-gen 项目来制作您自己的风格,该项目是生成文件的部分给定一个模板和 docker 个引擎事件。
不过,我再次推荐 Traefik;节省的时间和麻烦以及它附带的所有功能(不同的负载平衡策略、健康检查、断路器、使用 ACME/Let 的 Encrypt 自动设置 SSL 证书,...)
您只需要编写一个服务发现脚本,每隔 X 间隔查找一次更新的容器列表,并相应地更新 nginx 配置。
我有一个 docker-compose 设置,其中一个 nginx 容器用作构成我的应用程序的其余容器的反向代理和负载平衡器。
我可以使用 docker-compose up -d
启动应用程序,一切正常。然后,我可以使用 docker-compose up -d --scale auth=3
扩展我的一项服务,并且一切继续正常工作。
唯一的问题是 nginx 还不知道这两个新实例,所以我需要使用 docker exec revproxy nginx -s reload
、"revproxy" 手动重启 运行 容器内的 nginx 进程作为 nginx 容器的名称。
太好了,当我决定扩展我的一项服务时,我不介意 运行 额外的命令。但真正的问题是当某处出现容器故障时...... nginx 需要在这种情况发生时立即知道停止向故障实例发送流量,直到 Docker 引擎能够用健康的引擎替换它。
综上所述,基本上我想完成他们在 Traefik quickstart tutorial 中所做的事情,除了我想坚持使用 nginx 作为我的反向代理。
虽然我个人认为 Traefik 在你的情况下会真正节省时间,但还有另一个项目可以用 nginx 做你想做的事情:jwilder/nginx-proxy。
它通过侦听 docker 引擎事件来工作,当添加或删除容器时,它会使用模板更新 nginx 配置。
您可以按原样使用此 jwilder/nginx-proxy
docker 图像,或者您也可以使用 jwilder/docker-gen 项目来制作您自己的风格,该项目是生成文件的部分给定一个模板和 docker 个引擎事件。
不过,我再次推荐 Traefik;节省的时间和麻烦以及它附带的所有功能(不同的负载平衡策略、健康检查、断路器、使用 ACME/Let 的 Encrypt 自动设置 SSL 证书,...)
您只需要编写一个服务发现脚本,每隔 X 间隔查找一次更新的容器列表,并相应地更新 nginx 配置。