Beleza, Rodrigo?!
Cara, acho que o você poderá resolver isso usando o
nginx-proxy.
Ele é basicamente um container docker com um servidor nginx que também roda o
docker-gen.
Depois de instalado e configurado ele irá "monitorar" o socket do Docker, ou seja, vai escutar todos os eventos
gerados pelo docker. Aí você só precisará configurar cada container com as suas aplicações web para que o
docker-gen possa gerar automaticamente o arquivo de configuração do nginx, fazendo com que ele faça o papel
de um proxy reverso, mas pegando as configurações automaticamente dos containers.
Já que você usa o docker-compose, vai um exemplo para um container com wordpress:
wordpress:
image: wordpress
links:
- db:mysql
expose:
- 80
environment:
- "VIRTUAL_HOST=blog.rodrigo.com.br"
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: senha1234
No exemplo acima o docker irá rodar o wordpress e um banco de dados mariadb. A linha VIRTUAL_HOST=
blog.rodrigo.com.brvai dizer ao docker-gen qual domínio associar a esse servidor (que estará escutando na porta :80).
Instalando e configurando o nginx-proxy e ajustando seus containers como no exemplo acima, vai ser tudo automático.
Quando você ligar um container, o nginx vai ser atualizado com as informações necessárias para o proxy reverso. Isso vai
acontecer com todos os containers que você ligar.
A configuração do nginx-proxy é bem de boa, exemplo (docker-compose):
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock
Pronto.
Mas com isso você teria que usar o nginx como ponto de entrada de todos os seus sites, pois ele trabalhará como um proxy
reverso.
Era isso que você estava querendo?
Falou, Rodrigo!
Att,