#docker #nginx #flask #docker-compose #plotly-dash
#докер #nginx #колба #докер-сочинение #сюжетно-тире
Вопрос:
Я пытаюсь обслуживать несколько приложений Dash/Flask с помощью docker-compose и nginx. В настоящее время моя настройка выглядит следующим образом:
Приложение Dash использует хост 0.0.0.0
и порт 8050
:
if __name__ == '__main__': app.run_server(host='0.0.0.0',debug=True, port=8050)
В файле докера приложения отображается порт 8050
:
FROM python:3.9 # Copy function code COPY lp_scr_design_app.py / COPY assets/ assets/ COPY data/ data/ # Install the function's dependencies using file requirements.txt # from your project folder. COPY requirements.txt ./ RUN pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org -r requirements.txt EXPOSE 8050 # Start app CMD ["python", "lp_scr_design_app.py"]
Затем nginx настраивается таким образом, чтобы он передавал это приложение для определения местоположения /
:
server { listen 80; server_name docker_flask_gunicorn_nginx; location / { proxy_pass http://lp_scr_design_app:8050; # Do not change this proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /static { rewrite ^/static(.*) /$1 break; root /static; } }
с таким докер-файлом, как этот:
FROM nginx:1.15.8 RUN rm /etc/nginx/nginx.conf COPY nginx.conf /etc/nginx/ RUN rm /etc/nginx/conf.d/default.conf COPY project.conf /etc/nginx/conf.d/
Наконец, в docker-compose оба приложения организованы следующим образом:
version: '3' services: lp_scr_design_app: container_name: lp_scr_design_app restart: always build: ./lp_scr_design_app ports: - "8050:8050" command: gunicorn -w 1 -b :8050 app:server nginx: container_name: nginx restart: always build: ./nginx ports: - "80:80" depends_on: - lp_scr_design_app
Теперь я могу успешно создавать и запускать docker-compose без каких-либо проблем. Однако, если я попытаюсь открыть корневой каталог /
в браузере, я получу (через некоторое время) 502 плохих шлюза от nginx.
Где я ошибся в своей настройке здесь?
Комментарии:
1. С чего именно начинается ваша команда
lp_scr_design_app
. В вашем и есть две стартовые командыDockerfile
docker-compose
. Тоcommand
, что в тебеdocker-compose
, перекрываетCMD
то, что внутриDockerfile
. Проверьте, работает ли вашlp_scr_design_app
компьютер.2. На сервере я хочу
lp_scr_design_app
, чтобы меня запустил gunicorn. ФайлCMD
в Dockerfile используется, когда я запускаю приложение автономно без nginx на своем локальном компьютере.3. У вас проверка
lp_scr_design_app
запущена?