Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Portas das aplicações

No docker-compose, serviço do mongodb ficou sem nenhum parâmetro ports por ser acessado apenas dentro da network que foi criada.

Os serviços das aplicações não deveriam seguir a mesma lógica, sendo o load balancer sendo acessível por fora e ele direcionando as conexões para as aplicações por dentro da network?

Por que nos serviços das aplicações foi exposta as portas 3000 de cada um deles para uma porta aleatória?

3 respostas

Luiz beleza? Pode passar o seu docker compose pra eu dar uma olhada?

Eu gosto de criar um parametro networks nesse tipo de caso e não link por exemplo.

No caso da porta aleatória você não pode ter 2 containers usando a mesma porta tanto na sua máquina quanto no servidor. Nesses casos você tem o nginx por exemplo para balancear a carga e ele acessar todos os containers nas suas portas especificas.

Espero ter ajudado!

Na atividade em questão ele coloca nos três serviços de aplicação node1, node2 e node3

ports:
  - '3000'

Pelo que eu tinha entendido das explicações anteriores do curso isso não seria necessário, visto que o acesso externo seria pelo NGINX (load balancer) e esse acessaria os containers de aplicação internamente

Estou certo?

solução!

Olá Luiz,

Pense assim, o container é uma caixa fechada, quando é exposta uma porta não necessáriamente ele vai pra internet, o que ele faz é que essa "caixa" tem uma abertura pra ser acessada.

No caso do NGINX você expõe a porta mas, diferente dos nodes seu host:porta é exposto pra internet. Os nodes simplemente disponibilizam uma porta para que o próprio NGINX consiga acessar o conteúdo deles.

Então quando é acessado o NGINX por um ip ou url externo ele vai direcionar as requisições para o container pela porta 3000, no caso você vai acessar o container do node que usa a porta 3000 mas pra quem acessa é a porta 80 padrão do navegador. O NGINX faz esse papel de receber a requisição na porta 80 e chamar o node na porta 3000.

Não sei se minha explicação ficou clara, mas qualquer coisa só me perguntar.