Как правильно настроить docker-compose и nginx для нескольких приложений Dash/Flask?

#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 запущена?