nginx балансировщик нагрузки - Docker compose - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть простое flask приложение, работающее на порту 5000 внутри контейнера, и я пытаюсь добавить nginx баланс нагрузки для масштабирования приложения (3 экземпляра)

Вот мой docker-compose file:

version: "3.7"

services: 
    chat-server:
        image: chat-server
        build: 
            context: .
            dockerfile: Dockerfile
        volumes: 
            - './chat_history:/src/app/chat_history'
        networks: 
            - "chat_net"

    ngnix-server:
        image: nginx:1.13
        ports: 
            - "8080:80"
        volumes: 
            - './ngnix.conf:/etc/ngnix/nginx.conf'
        networks: 
            - "chat_net"
        depends_on: 
            - chat-server

networks: 
    chat_net:

А вот мой nginx.conf file:

events { worker_connections 1024;}

http {
    upstream app {
        server chat-server_1:5000;
        server chat-server_2:5000;
        server chat-server_3:5000;

    }
}

server {
    listen 80;
    location / {
        proxy_pass http://app;
    }
}

обе службы находятся в одной сети chat_net, но когда я нажимаю localhost:8080 в моей браузер я получаю страницу nginx по умолчанию, почему? что мне не хватает?

1 Ответ

2 голосов
/ 02 февраля 2020

У вас есть опечатка, и вы неправильно монтируете в файл nginx.conf.

Вы пишете его ngnix в нескольких местах раздела томов, и контейнер запускается с конфигурацией по умолчанию (следовательно, Домашняя страница по умолчанию).

Как только вы это исправите, вы, вероятно, столкнетесь с ошибкой, упомянутой @Federkun (nginx не сможет разрешить 3 доменных имени, которые вы проксируете).

Ваша директива server также находится не в том месте (она должна находиться в разделе http).

Это должна быть измененная версия вашего файла:

events { worker_connections 1024;}

http {
    upstream app {
        server chat-server:5000;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://app;
        }
    }
}

Обратите внимание, что это лучше, чем необходимость nginx, чтобы знать количество реплик. Вы можете запустить docker-compose up с --scale chat-server=N и изменить размер в любое время, выполнив ту же команду с другим N без простоя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...