Intereting Posts
IBM-Bluemix: изображение, сообщаемое сжатыми контейнерами IBM, меньше, чем локальный механизм Docker Ошибка: модуль не регистрировался самостоятельно Команда контейнера Docker не найдена или не существует Как получить только контейнеры с определенным изображением в go-dockerclient? Файлы ADD / COPY с поддержкой докеры sbt-native-packager Как правильно настроить синхронизацию докеров для исключения папок Confluent Platform: обновить Schema Registry для использования Avro 1.8.1 и использовать новую сборку в докере и хосте Установить дискурс (изображение докера) на Openshift Online docker-compose –x-networking не работает Создание контейнеров докеров в Windows Kubernetes добавляет сертификат ca в корневерный корд pods Докер: Cargo.toml не найден Докер для Mac Beta: невозможно связать контейнеры Мощное расширение докеров с Z can not read new files «Сертификат сертификата сверстников отмечен как не доверенный пользователю» в Openshift3

Следует ли упаковать nginx в тот же контейнер, что и Django, при развертывании с помощью Docker Swarm?

Мы надеемся переместить наш текущий стек Nginx / Gunicorn / Django в Docker и развернуть его для высокой доступности с помощью Docker Swarm. Одно из решений, с которыми мы боролись, заключается в том, следует ли размещать Nginx в том же контейнере, что и Gunicorn / Django. Вот сценарии и способы их просмотра:

Сценарий 1 : Поместите Nginx в контейнер приложения. Это противоречит методологии «каждая услуга имеет свой собственный контейнер», но она позволяет Nginx связываться с Gunicorn напрямую через сокет unix вместо порта. Это, очевидно, не огромно, но стоит упомянуть. Основные преимущества перечислены ниже. Потенциальным недостатком здесь является наличие дополнительных накладных расходов из слишком большого количества экземпляров Nginx (пожалуйста, взвешивайте это).

Сценарий 2: Поместите Nginx в собственный контейнер. Хотя это следует вышеупомянутой методологии, оно кажется более ошибочным. В сценарии Docker Swarm распределение контейнеров Nginx и App скорее всего не будет однородным. Некоторые узлы могут иметь больше контейнеров Nginx, в то время как другие имеют больше контейнеров приложений (и, возможно, даже 0 контейнеров Nginx). Это означает, что Nginx закончит обратное проксирование контейнера приложения на другом хосте полностью.

Теперь я уверен, что Docker Swarm поддерживает специальные конфигурации, в которых, по крайней мере, один Nginx-контейнер должен работать на каждом узле, но это выглядит как анти-шаблон. Даже в этом случае стоит ли затрачивать больше усилий на Сценарий 1?

Основываясь на опыте производства, лучше сопоставить правило из докеров docs one container for one process . Вы отправляете (микро) сервис с изображением докеров, и если в нем требуется nginx, вы его включаете.

Таким образом, в основном для приложения django есть:

  1. nginx (например: для статических файлов)
  2. боевик или увсги
  3. сам код django

Не вижу никаких проблем с добавлением nginx в контейнер, но мало внимания уделяется размеру изображения докеров. На ubuntu: 16.04 / debian: jessie, добавив nginx-full, вы увеличиваете размер своего изображения примерно на ~ 100 мб. (некоторые накладные расходы при первом вытягивании изображения).

Таким образом, это не противоречит второму сценарию, так как вы можете добавить nginx за образ вашего докера для целей балансировки (или управления proxy_pass).