Expondo Portas em Dockerfiles
Ao construir imagens Docker, pode especificar as portas que devem ser expostas dentro do contendor utilizando a instrução EXPOSE no Dockerfile.
Sintaxe para Expor Portas
A instrução EXPOSE num Dockerfile segue esta sintaxe:
EXPOSE < porta > [ < porta > / < protocolo > ...]
Aqui, <porta> representa o número da porta, e o <protocolo> opcional especifica o protocolo, que pode ser tcp (padrão) ou udp.
Por exemplo, para expor a porta 80 (HTTP) e a porta 22 (SSH) no seu contendor, utilizaria a seguinte instrução EXPOSE:
EXPOSE 80 22
Mapeamento de Portas Expostas em Tempo de Execução
Quando executa um contendor baseado na imagem, pode mapear as portas expostas para as portas da máquina hospedeira utilizando a flag -p ou --publish com o comando docker run.
docker run -p <porta-hospedeira>:<porta-contendor> <nome-da-imagem>
Por exemplo, para mapear a porta 80 do contendor para a porta 8080 da máquina hospedeira, utilizaria o seguinte comando:
docker run -p 8080:80 my-app
Isto permite que clientes externos acessem o serviço que está a funcionar na porta 80 dentro do contendor, conectando-se à porta 8080 na máquina hospedeira.
Exposição de Múltiplas Portas
Pode expor múltiplas portas num Dockerfile utilizando múltiplas instruções EXPOSE. Isto é útil quando o seu contendor executa múltiplos serviços ou aplicações que precisam de ser acessíveis a partir da máquina hospedeira.
EXPOSE 80
EXPOSE 22
EXPOSE 3306
Ao executar o contendor, pode mapear cada uma destas portas expostas para as portas da máquina hospedeira utilizando a flag -p ou --publish.
docker run -p 8080:80 -p 2222:22 -p 3306:3306 my-app
Seguindo esta abordagem, pode garantir que todas as portas necessárias são expostas e acessíveis a partir da máquina hospedeira.