Docker-compose Nginx для нескольких контейнеров - PullRequest
0 голосов
/ 30 мая 2019

У меня есть приложение Flask с настройкой обратного прокси-сервера Nginx с помощью docker-compose. Я могу заставить все работать в одном контейнере без проблем, но мне нужно запустить промежуточные и производственные серверы на одной машине, поэтому я пытаюсь перенести мои настройки в несколько контейнеров с отдельным контейнером nginx-proxy. Настройка обратного прокси-сервера, кажется, будет в порядке, но когда я получаю доступ к приложению с помощью прокси-сервера Flask, возникают некоторые проблемы с запросом. Ниже подробно описаны файлы docker-compose и выходные данные сервера.

NGINX-PROXY docker-compose.yml

version: "3.5"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - proxy

networks:
  proxy:

Колба docker-compose.yml

version: '3.5'

services:
  # other services defined, not relevant for the issue

  data-api:
    environment:
      FLASK_ENV: development
      VIRTUAL_HOST: app.local
    build: ./dataAPI
    expose: 
      - 5000
    ports:
      - 5000:5000
    volumes:
     - ./dataAPI:/dataAPI
    networks:
      - nginx_proxy

networks:
  nginx_proxy:
    external: true

Я добавил строку в /etc/hosts для app.local. Я раскручиваю сначала nginx, затем приложение. Если я пытаюсь получить к нему прямой доступ с помощью 0.0.0.0:5000/staging/data, запрос обрабатывается без проблем, но если я пытаюсь использовать прокси с app.local/staging/data, приложение Flask выдает 404:

Колба журнала

data-api_1  | 172.20.0.1 - - [30/May/2019 14:13:29] "GET /staging/data/ HTTP/1.1" 200 -
data-api_1  | 172.20.0.2 - - [30/May/2019 14:13:31] "GET /staging/data/ HTTP/1.1" 404 -

1 Ответ

0 голосов
/ 31 мая 2019

Не похоже, что вы помещаете контейнеры в одну сеть.Nginx_proxy использует сеть с именем proxy, в то время как контейнер с флягами использует сеть с именем nginx_proxy.

Кстати, docker-compose полезен для составления приложений, требующих нескольких контейнеров.Вместо того, чтобы использовать отдельный файл docker-compose для каждого контейнера, эта настройка может быть проще, если вы поместите обе службы в один и тот же файл docker-compose.Тогда вам даже не нужно настраивать отдельную сеть, так как compose создает сеть для служб по умолчанию.

Еще одно замечание: поскольку вы используете обратный прокси-сервер nginx, вам, вероятно, не захочется отображать фляжкупорт на хост-машину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...