проблема при попытке сделать обратный прокси на склянке с оружейным приложением с помощью nginx и докера - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь создать обратный прокси-сервер и докеризовать его для моего приложения фляги с помощью nginx, gunicorn, docker и docker-compose.До этого часть nginx была в том же контейнере, что и веб-приложение, я пытаюсь отделить его.Мой yaml-файл docker_compose:

version: '3.6'

services:
  nginx:
    restart: always
    build: ./nginx/
    ports:
      - 8008:8008
    networks:  
      - web_net

  flask_min:
    build: .
    image: flask_min
    container_name: flask_min
    expose:
      - "8008"
    networks:  
      - web_net
    depends_on:
      - nginx

networks:
  web_net:
    driver: bridge

Мой dockerfile:

    FROM python:3.6
    MAINTAINER aurelien beliard (email@domain.com)
    RUN apt update
    COPY . /usr/flask_min
    WORKDIR /usr/flask_min
    RUN useradd -r -u 20979 -ms /bin/bash aurelien.beliard
    RUN pip3 install -r requirements.txt
   CMD gunicorn -w 3 -b :8008 app:app

мой файл docker nginx

FROM nginx
COPY ./flask_min /etc/nginx/sites-available/
RUN mkdir /etc/nginx/sites-enabled
RUN ln -s /etc/nginx/sites-available/flask_min /etc/nginx/sites-enabled/flask_min

мой файл конфигурации nginx в / etc /nginx sites-available и sites-enabled названы flask-min:

server {
    listen 8008; 
    server_name http://192.168.16.241/ ;
    charset utf-8; 
    location / { 
        proxy_pass http://flask_min:8008;
         } }

Файл require.txt:

Flask==0.12.2
grequests==0.3.0
gunicorn==19.7.1
Jinja2==2.10

2 контейнера хорошо созданы, Gunicorn запускаются хорошо, ноя не могу получить доступ к приложению, и в журнале доступа и ошибок nginx ничего нет.

Если у вас есть идеи, они будут очень благодарны.

ps извините за ошибку.не мой родной язык.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Как уже упоминалось в ответе Maxm, флешка зависит от nginx до запуска в первую очередь.Один из способов исправить это - изменить порядок зависимостей, но я думаю, что есть более умное решение, которое не требует зависимости.

Nginx пытается выполнить некоторую оптимизацию, кэшируя результаты DNS proxy_pass, но выможет сделать его более гибким, установив его в переменной.Это позволяет вам свободно перезапускать колбу без необходимости перезапуска nginx.

Вот пример:

resolver 127.0.0.11 ipv6=off;
set $upstream http://flask_min:8008;
proxy_pass $upstream;
0 голосов
/ 22 октября 2018

server_name просто должен быть хостом.попробуйте localhost или просто _.

Вы также можете использовать несколько хостов: server_name 192.168.16.241 localhost;

depends_on должно быть на nginx, а не flask_min.Выньте его из колбы и добавьте:

depends_on:
  - flask_min

К nginx.

Посмотрите, работает ли это, дайте мне знать, если у вас возникнут какие-нибудь препятствия.

...