Я пытаюсь использовать контейнер nginx в качестве обратного прокси-сервера, который будет распределять нагрузку по нескольким экземплярам приложения фляги, для этого я использую docker-composer.
version: '3'
services:
app:
build:
context: ./app
dockerfile: Dockerfile
expose:
- "8001"
proxy:
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- "80:80"
links:
- app
и мой файл докера nginx
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
, а мой файл докерства приложения
FROM python:3-alpine
RUN apk update && apk upgrade && pip install -U pip
RUN apk add --update alpine-sdk make gcc python3-dev python-dev libxslt-dev libxml2-dev libc-dev openssl-dev libffi-dev zlib-dev py-pip \
&& rm -rf /var/cache/apk/*
RUN set -x \
&& VER="17.03.0-ce" \
&& curl -L -o /tmp/docker-$VER.tgz https://get.docker.com/builds/Linux/x86_64/docker-$VER.tgz \
&& tar -xz -C /tmp -f /tmp/docker-$VER.tgz \
&& mv /tmp/docker/* /usr/bin
WORKDIR /app
ADD . /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 8001
CMD ["python3.6", "main.py"]
Я использую следующую команду для сборки
docker-compose build
и следующая команда для запуска контейнеров
docker-compose up -d --scale app=5
, которая показывает
Starting testapp_app_1 ... done
Creating testapp_app_2 ... done
Creating testapp_app_3 ... done
Creating testapp_app_4 ... done
Creating testapp_app_5 ... done
, но которую я проверяю в журналах докера, кажется, что все запросы являются серверами при тестированииappapp_app_1
мой файл конфигурации nginx
#worker_processes 4;
events { worker_connections 1024; }
http {
# sendfile on;
# upstream app_servers {
# server app:8001;
# }
server {
listen 80;
server_name localhost;
resolver 127.0.0.11;
set $backends app;
location / {
proxy_pass http://$backends:8001;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
Пожалуйста, объясните, как динамически округлять запросы ко всем контейнерам приложения