Как проксировать Apache в докеризованное приложение Flask/Gunicorn

#docker #apache #flask #proxy

Вопрос:

У нас есть сервер под управлением apache2, на котором размещается ряд веб-сайтов и приложений. У нас есть докеризованное приложение Flask (обслуживаемое с помощью Gunicorn), которое мы хотели бы развернуть на сервере и направить на него прямой трафик Apache. В основном https://oneofoursites.com/flask_app перенаправление в окно настройки порта доступно для приложения Flask. Прямо сейчас сайт работает нормально, если вы перейдете по https://oneofoursites.com:4000/ ссылке .

Я впервые попытался сделать что-то подобное в файле apache.conf в разделе доступные сайты:

 ProxyPass /flask_app http://127.0.0.1:4000/ connectiontimeout=3600 timeout=3600
ProxyPassReverse /flask_app http://127.0.0.1:4000/
<Location /flask_app >
    Require all granted
</Location>
 

Приложение flask теперь доступно по адресу https://oneofoursites.com/flask_app , но ни одна из ссылок не работает.

Документация по колбе была немного полезной, но недостаточно близкой к моему случаю. Кажется, я не могу заставить Flask собирать переменные окружения (поскольку он находится внутри контейнера Docker), поэтому не смог заставить его изменить сами заголовки. Я заглянул в mod_wsgi, но не уверен, как его развернуть (внутри контейнера Docker, и Apache не будет запускать его; вне контейнера, как мне перенаправить его в приложение Flask?). Большинство руководств, которые я нахожу, рекомендуют Nginx, поэтому, возможно, мне нужно развернуть Nginx (либо в существующем контейнере Flask, либо в отдельном контейнере с docker-compose)? Будет ли это тогда действовать как подходящее промежуточное звено между Apache и приложением Flask?

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

1. Я бы запустил nginx/ apache в другом контейнере и использовал docker-compose. Просто помните, что вам нужно привязать порты к внешним портам, чтобы apache мог забрать их за пределами docker