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?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
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.