将Nginx Docker容器连接到16个工作人员

时间:2017-07-01 23:51:39

标签: docker

我有一个Nginx Docker容器和16个负载均衡的Web服务器,每个服务器都暴露主机上的端口8081-8096

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!这似乎是关闭。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

你没有选择使用nginx来通过一系列端口来备用请求而不指定每个请求。

我建议尝试一下:https://github.com/jwilder/nginx-proxy

这是一个nginx容器,可以自动发现需要代理的任何其他容器。它从其他容器读取一些特殊的env var,以便知道如何代理它们。

使用--network代替--link。只要将所有容器放在同一网络中,就不需要链接它们。 --link is being deprecated

docker network create mynet
docker run --network mynet ........