Intereting Posts
Можно ли игнорировать подпапку (например, node_module) в установленном томе в контейнере докера? Ошибка Docker – "jq: ошибка: не может перебирать нуль" Как установить pgrep / pkill на изображение debian wheezy docker Как docker работает на osx, использует ли он бродягу? Как создать портативный GMP и GCC в Docker? Как приложение golang разговаривает с postgres, используя докер в aws-серверах? Запустить Docker с помощью сценария оболочки с удаленной машины? Проблема с IP-адресами Docker Redis Sentinel с развертыванием стека докеров Режим сетевой сети док-станции ElasticBeanstalk docker-compose build error при использовании родительского dir и dockerfile для сборки Использование контейнера докеров, запрашивающего экземпляр AWS RDS Ошибка публикации .NET Core: «Не удалось найти msdeploy.exe, установите его и повторите попытку» Как запустить yesod init из контейнера докеров? nfs volume mount to mysql docker контейнер внутри виртуального бокса ubuntu не работает Контейнер Tomcat Docker не может получить доступ к контейнеру Postgres

Как использовать nginx с докере в качестве обратного прокси

У меня есть приложение django и запускаю его с gunicorn на localhost: 8000 У меня есть конфиги для nginx, чтобы использовать его как обратный прокси.

upstream django { # fail_timeout=0 means we always retry an upstream even if it failed # to return a good HTTP response (in case the Unicorn master nukes a # single worker for timing out). server localhost:8000 fail_timeout=0; } 

Я знаю, как выставить 80-портовый порт и запустить nginx в контейнере, но я не понимаю, как подключить пушки, работающие на localhost и nginx в контейнере.

Вам нужно будет использовать IP-адрес моста, созданного докером. В Докере есть хорошая статья, объясняющая это: https://docs.docker.com/v1.6/articles/networking/

Когда Docker запускается, он создает виртуальный интерфейс с именем docker0 на главной машине. Он случайным образом выбирает адрес и подсеть из частного диапазона, определенного RFC 1918, которые не используются на главной машине, и назначает его docker0.

Если мы посмотрим на IP-адрес, назначенный docker0 ( sudo ip addr show docker0 ), мы могли бы использовать это как IP-адрес для связи с хостом из контейнера докеров.

  upstream django { # fail_timeout=0 means we always retry an upstream even if it failed # to return a good HTTP response (in case the Unicorn master nukes a # single worker for timing out). server IP_OF_DOCKER0:8000 fail_timeout=0; } 

Я не тестировал выше, но я считаю, что он должен работать. Если нет, вам может понадобиться связать и пушку с докером.

Этот ответ также хорошо разбирается в этом процессе … Изнутри контейнера Docker, как я могу подключиться к локальному хосту машины?

Лучшим подходом может быть также «dokerize» приложение django, построить сеть между доксоризированным nginx и приложенным django-приложением, а затем открыть порт http из докционированного nginx для всех интерфейсов.

Вот хорошая статья об этом, может быть, вы можете взять некоторые подсказки от нее 🙂