Melhores práticas para mapear nomes de domínio para Docker Container

O que é considerado "melhores práticas" para servir um contêiner docker de um nome de domínio específico?

Por exemplo:

  • Container1 executa o aplicativo A na porta 8080 e acessado via AwesomeAppA.com
  • Container2 executa App B na porta 8090, e acessado via AwesomeAppB.com

Você pode então, por exemplo:

  1. Faça com que seu contêiner exponha a porta usada por Gunicorn / uWSGI, por exemplo, e use Nginx no host docker para lidar com o proxy.
  2. Mas você também pode fazer com que seu contêiner execute o Nginx internamente e use HAProxy.

Mas o que é melhor? Existem outras opções preferidas, ou é realmente para baixo a preferência pessoal?

A opção 1 está em conformidade com o princípio de responsabilidade única e permite que você execute seu aplicativo 1 no contêiner e deixe o host lidar com o proxy. Ele também permite que o Nginx lide com SSL, mas requer configuração e provisionamento adicionais além de apenas "docker run".

A melhor prática de acordo com os princípios Docker é estar em conformidade com o princípio da responsabilidade única.

Essa é a opção 1 é a maneira preferida de ir.

Para a lógica por trás disso, veja este artigo interessante

Além disso, você pode usar o Docker da maneira que achar mais adequado às suas necessidades de negócios.