1
resposta

Mapeamento de portas

Fiquei com uma duvida no ultimo video. Não havia ficado para mim claro que o mapeamento de portas tinha de ser feito de uma maneira especifica. Quero dizer, o container aludocker/alura-books expõe a porta 3000. Para mim o mapeamento para a porta do host poderia ser feito para qualquer porta, por exemplo -p3000:8080, só que quando fiz isso não funcionou. Tive que mapear com -p3000:3000. É isso mesmo? Essa é uma regra?

Obrigado

1 resposta

Oi, Furlani!

O mapeamento de portas no Docker pode, sim, ser feito de maneira flexível, mas há algumas nuances a serem consideradas.

Quando você usa a opção -p no Docker, você está mapeando uma porta do host para uma porta do container. A sintaxe é -p <porta_host>:<porta_container>. No seu exemplo, o container aludocker/alura-books expõe a porta 3000. Isso significa que dentro do container, a aplicação está ouvindo na porta 3000.

Se você faz -p 3000:8080, você está dizendo ao Docker para mapear a porta 3000 do host para a porta 8080 do container. Isso não vai funcionar porque a aplicação dentro do container está ouvindo na porta 3000, não na 8080.

O correto seria -p 3000:3000, onde você está mapeando a porta 3000 do host diretamente para a porta 3000 do container. Dessa forma, quando você acessa a porta 3000 no seu host, o Docker redireciona o tráfego para a porta 3000 dentro do container, onde a aplicação está ouvindo.

Então, não é exatamente uma regra fixa, mas sim uma questão de entender quais portas estão sendo usadas pelo container e mapeá-las corretamente no host. Aqui está um exemplo prático:

docker run -d -p 3000:3000 aludocker/alura-books

Isso deve funcionar, pois você está mapeando a porta 3000 do host para a porta 3000 do container, onde a aplicação está rodando.

Bons estudos!