Práctica Recomendada para Asignar Nombres de Dominio al Contenedor Docker

¿Cuáles son las "mejores prácticas" para servir un contenedor docker desde un nombre de dominio específico?

Por ejemplo:

  • El Contenedor1 ejecuta la aplicación A en el puerto 8080 y se accede a ella a través de AwesomeAppA.com
  • Container2 ejecuta la aplicación B en el puerto 8090 y se accede a ella a través de AwesomeAppB.com

A continuación, puede, por ejemplo:

  1. Haga que su contenedor exponga el puerto utilizado por Gunicorn / uWSGI, por ejemplo, y use Nginx en el host de Docker para manejar el proxy.
  2. Pero también puede hacer que su contenedor ejecute Nginx internamente y use HAProxy.

Pero ¿cuál es mejor? ¿Hay otras opciones preferidas, o realmente se trata de preferencias personales?

La opción 1 se ajusta al principio de responsabilidad única y le permite ejecutar su aplicación 1 en el contenedor y dejar que el host maneje el proxy. También permite que Nginx maneje SSL, pero requiere configuración y aprovisionamiento adicionales además de solo "ejecutar docker".

La mejor práctica de acuerdo con los principios de Docker es cumplir con el principio de responsabilidad única.

Es decir, la opción 1 es la forma preferida de hacerlo.

Para conocer la razón detrás de esto, consulte este interesante artículo

Además de esto, puede usar Docker de la manera que crea más adecuada para sus necesidades comerciales.