繁体   English   中英

使用Docker和Nginx proxy_pass时重新启动容器

[英]Restarting Containers When Using Docker and Nginx proxy_pass

我有一个nginx docker容器和一个webapp容器,它们成功运行并彼此交谈。

Nginx容器侦听端口80,并使用proxy_pass将流量定向到webapp容器的IP。

upstream app_humansio { server humansio:8080 max_fails=3 fail_timeout=30s; }

docker在/etc/hosts文件中设置了“ humansio”,因为我已经使用--link humansio:humansio启动了nginx。 webapp容器(humansio)始终暴露8080。

问题是,当我重新加载webapp容器时,到nginx容器的链接断开,我也需要重新启动它。 有什么办法可以以不同的方式执行此操作,以便在webapp容器重新加载时不需要重新启动Nginx容器吗?

-

我尝试做一些类似的操作,例如使用一个公共端口(两个端口均为8001)手动连接它们,但是由于它们实际上保留了该端口,因此第二个容器也不能使用它。

谢谢!

如果不想每次都要重新启动代理容器之一时就重新启动代理容器(例如, ),则可以看看自动更新的代理配置方法: http : //jasonwilder.com/blog/2014/ 3月25日/自动化-nginx的-反向代理换搬运工/

因此,我更喜欢直接在主机上运行代理(haproxy的nginx)。

但是一个选项是“通过大使容器链接” https://docs.docker.com/articles/ambassador_pattern_linking/

https://www.digitalocean.com/community/tutorials/how-to-use-the-ambassador-pattern-to-dynamically-configure-services-on-coreos

如果您使用某些现代版本的docker,则可能会更新nginx容器中与您的Web服务的链接(您可以使用docker exec -ti nginx bash-cat / etc / hosts进行检查)-问题是nginx不使用/ etc /每次托管-它缓存ip并更改它-他迷路了。 'docker kill -s HUP nginx',这使得nginx无需重新启动即可重新加载其配置。

我也有同样的问题。 我以前使用systemd单位文件启动服务-当您使一项服务(nginx)依赖于其他服务(webapp)然后重新启动webapp时-systemd足够聪明,也可以重新启动nginx。 现在,我尝试通过docker-compose运气,并重新启动webapp容器使nginx感到困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM