2015-03-03 40 views
1

我有一个nginx的码头工人容器和Web应用程序容器成功运行和交谈海誓山盟。重新启动容器中使用泊坞窗和Nginx的proxy_pass当

nginx的容器监听80端口,并使用proxy_pass指挥交通的Web应用程序容器的IP。

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

“humansio” 因为我和--link humansio:humansio nginx的开始在/etc/hosts文件由泊坞窗设置。 webapp容器(humansio)始终暴露8080.

问题是,当我重新加载webapp容器时,nginx容器的链接中断,我也需要重新启动它。有什么办法可以做到这一点不同,所以当webapp容器重新加载时,我不需要重新启动nginx容器?

-

我试图做这样的事情他们使用普通端口(8001两个)手动连接,但由于它们实际上保留端口,第二个容器不能使用它。

谢谢!

+1

您使用的是什么版本的Docker?在重新启动webapp容器之后,nginx容器更新的'/ etc/hosts'的内容是否会更新? – 2015-03-03 07:44:59

回答

0

如果u使用码头工人在nginx的容器中的链接到你的Web服务可能会得到更新的一些现代版(U可以检查它与docker exec -ti nginx bash - 然后是cat/etc/hosts) - 问题是nginx does not'每次都使用/ etc/hosts - 它缓存ip并且当它改变时 - 他会丢失。 'docker kill -s HUP nginx'使得nginx无需重启就可以重新加载配置。

我有同样的问题。我曾经用systemd单元文件开始我的服务 - 当你使一个服务(nginx)依赖于其他(webapp),然后重新启动webapp - systemd足够聪明,可以重新启动nginx。现在我试着用docker-compose和运行webapp容器混淆nginx。