2015-03-03 39 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。