Как стать автором
Обновить

Комментарии 10

Очень понравилась статья. И про docker и про nginx, базовые сведения в хорошо изложенном материале.
Я бы таки поменял местами

COPY . /app
RUN pip install -r requirements.txt
# VVV
RUN pip install -r requirements.txt
COPY . /app


Чтобы docker layers кешировались и не нужно было каждый раз переустанавливать зависимости.
А как можно установить зависимости, если файл requirements.txt ещё не скопирован?
Справедливо, тогда вот:

FROM python:3.8

EXPOSE 8080

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]


Как раз именно так рекомендует собирать сам Docker.

Из минусов — дважды будем копировать requirements.txt, но переживем)
Очень полезное замечание, спасибо!)

Или вот аналогичный пример для poetry

FROM python:3.8

WORKDIR app

EXPOSE 8080

RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

ENV PATH="${PATH}:/root/.poetry/bin"

COPY poetry.lock pyproject.toml /app/

RUN poetry config virtualenvs.create false && poetry install

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
Да, прикольно. Метод кажется немного противоестественным для приложения, но гораздо лучше для докера. Запомню эту технику.
Всё коротко и чётко, мне нравится.
подключим приложение web и nginx к новой сети my-app

в коде app-net
networks:
  app-net:
      driver: bridge
спасибо! поправил
> это особый вид балансировки нагрузки, при которой трафик поступает на один определенный сервер группы

Для всех? Если да, то зачем были нужны остальные сервера?
Каким образом производится переброс нагрузки, если начальный целевой сервер вышел из строя?
Если же делится по сессии, то как производится это разделение и чем оно управляется?

Без введения с разъяснением этих вопросов —

Обычно тут принято рассказывать такие вещи хотя бы вкратце.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий