Наилучшая практика сопоставления доменных имен с контейнером Docker

Что считается "передовой практикой" для обслуживания контейнера docker с определенного доменного имени?

Например:

  • Container1 запускает приложение A на порту 8080, и доступ к нему осуществляется через AwesomeAppA.com
  • Container2 запускает приложение B на порту 8090, и доступ к нему осуществляется через AwesomeAppB.com

Затем вы можете, например:

  1. Попросите ваш контейнер предоставить порт, используемый, например, Gunicorn/uWSGI, и использовать Nginx на хосте docker для обработки прокси-сервера.
  2. Но вы также можете заставить свой контейнер запускать Nginx внутри и использовать Гапрокси.

Но что лучше? Есть ли другие предпочтительные варианты, или это действительно зависит от личных предпочтений?

Вариант 1 соответствует принципу единой ответственности и позволяет вам запускать ваше приложение 1 в контейнере и позволить хосту обрабатывать прокси-сервер. Это также позволяет Nginx обрабатывать SSL, но требует дополнительной настройки и подготовки, помимо простого "запуска docker".

Наилучшей практикой в соответствии с принципами Docker является соблюдение принципа единой ответственности.

То есть вариант 1 является предпочтительным способом.

Обоснование этого см. эта интересная статья

Кроме того, вы можете использовать Docker так, как считаете более подходящим для ваших бизнес-нужд.