2017-07-01 68 views
4

我有Nginx上泊塢容器,16負載平衡的Web服務器,每個服務器主機上暴露的端口,8081-8096連接Nginx的泊塢窗容器16工人

docker run -d \ 
    --restart always \ 
    --name "web.${name}" \ 
    -v /srv/web/web-bundle:/bundle \ 
    -p "${port}":80 \ 
    kadirahq/meteord:base 

我的Nginx的容器以前鏈接到的唯一web圖像,前我試圖按比例繪製:

docker run -d \ 
    --name nginx \ 
    --link web.1:web.1 \ 
    -v /srv/nginx:/etc/nginx \ 
    -v /srv/nginx/html:/usr/share/nginx/html \ 
    -p 80:80 \ 
    -p 443:443 \ 
    nginx 

Nginx的上游配置:

upstream web { 
     ip_hash; 
     server 127.0.0.1:8081; 
     server 127.0.0.1:8082; 
     server 127.0.0.1:8083; 
     # ... you get the point 
} 

我需要這個Nginx圖像才能夠擊中127.0.0.1:8081-8096,但它似乎並不允許這樣做。我不想讓16 --link s!這似乎關閉。

這樣做的正確方法是什麼?

回答

2

你沒有選擇使用nginx通過一系列的端口,而不是指定每個端口的請求。

我建議嘗試了這一點:https://github.com/jwilder/nginx-proxy

這是一個nginx的容器,可以自動發現需要被代理的任何其他容器。它從其他容器中讀取一些特殊的env var,以便知道如何代理它們。使用--network代替--link。只要你把所有的容器放在同一個網絡中,你就不需要鏈接它們。該--linkis being deprecated

docker network create mynet 
docker run --network mynet ........ 
+0

謝謝。我不介意在Nginx的'upstream web'配置中指定它們。儘管如此,我寧願避免使用16個「鏈接」。我只是想找到另一種方式來暴露容器的所有16個容器,而不使用鏈接。 – dthree

+0

使用--network代替--link。只要你把所有的容器放在同一個網絡中,你就不需要鏈接它們。 - 鏈接正被棄用 – Robert