Comunicação entre containers e o host usando o host.docker.internal
Salve Devs! Beleza? 🖖🏽
Hoje o papo é sobre comunicação entre containers e o host usando o host.docker.internal 🚀💻
Durante o desenvolvimento com Docker, pode bater aquela dúvida: como minha aplicação dentro de um container acessa algo que está fora dele? Seja uma API externa, um banco de dados rodando localmente ou até outro container em outra rede, a resposta pode estar em um recurso nativo do Docker: host.docker.internal.
Esse carinha é um atalho que permite que o container acesse a máquina onde o Docker está rodando — perfeito pra quem está desenvolvendo localmente e precisa fazer esse tipo de integração!
☑️ Como Configurar
Editar o arquivo de hosts da sua máquina host:
Isso garante que o sistema reconheça o nome host.docker.internal.
Linux/Mac: abra e edite o arquivo /etc/hosts
Windows: vá até C:\Windows\System32\drivers\etc\hosts
Depois, adicione essa linha ao final do arquivo:
127.0.0.1 host.docker.internal
Agora seus containers podem acessar algo que esteja rodando no host (como uma API ou banco).
☑️ Configurando no docker-compose
Dentro do seu docker-compose.dev.yaml, adicione a seguinte configuração ao container que precisa acessar o host:
services:
app:
image: minha-aplicacao
extra_hosts:
- "host.docker.internal:host-gateway"
Com isso, o Docker mapeia esse nome para o IP do host de forma automática.
☑️ Testando na prática
Para testar esse recurso, montei um mini cenário com duas aplicações:
➖ Uma principal que consome dados
➖ Outra simulando uma API externa
A API externa roda em um container separado, e a aplicação principal acessa ela via:
http://host.docker.internal:9000/products
➖ Isso retorna um JSON com produtos fictícios — mas o conceito serve pra qualquer cenário onde você precise que o container fale com algo externo ao ambiente Docker dele.
Utilizar o host.docker.internal é perfeito para testes locais, ambientes de desenvolvimento, ou simulações com APIs externas.
👉🏽 Mas atenção: para containers se comunicarem entre si dentro do mesmo Compose, o ideal ainda é usar a mesma rede Docker e chamar os serviços pelos seus nomes.
Espero que esse conteúdo ajude você a explorar melhor os recursos do Docker e otimize seus fluxos de trabalho. Se tiver dúvidas ou quiser compartilhar experiências e dicas, deixe seu comentário! 💬
🔗 GitHub: github.com/Altair-Mateus
🔗 Linkedin: Altair Mateus Toledo Alencastro | LinkedIn
🔗 Portfólio: altair-mateus.github.io/portfolio
#Docker #DevOps #Containers #SoftwareDevelopment #Backend #DesenvolvimentoDeSoftware #InfraestruturaComoCodigo #TechTips