image

Unlimited bootcamps + English course forever

80
%OFF
Article image
Altair Alencastro
Altair Alencastro08/04/2025 14:04
Share
Microsoft Certification Challenge #3 DP-100Recommended for youMicrosoft Certification Challenge #3 DP-100

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

    image

    image

    image

    image

    image

    Share
    Recommended for you
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Microsoft 50 Anos - Computação em Nuvem com Azure
    Comments (2)
    Altair Alencastro
    Altair Alencastro - 10/04/2025 08:33

    Obrigado DIO!

    Respondendo a sua pergunta, o Docker facilita a escoabilidade porque garante que os serviços executem de forma idêntica em qualquer ambiente, eliminando o principal problema de "na minha máquina funciona" hehe. Como o Docker é leve, permite replicar serviço sem sobrecarregar os recursos, e se usarmos orquestradores de containers como o Kubernetes, conseguimos automatizar o escalonamento, atendendo rapidamente a picos de alta demanda e mantendo a disponibilidade dos sistemas.

    DIO Community
    DIO Community - 08/04/2025 16:02

    Altair, seu artigo sobre comunicação entre containers e o host usando o host.docker.internal ficou muito esclarecedor! Você explicou de forma prática e acessível como configurar essa comunicação, abordando desde a edição do arquivo de hosts até a configuração no docker-compose. A simulação de uma API externa rodando em um container e acessada pela aplicação principal também foi um exemplo excelente de como esse recurso pode ser aplicado no dia a dia de um desenvolvedor.

    Na DIO, muitos alunos estão utilizando o Docker em seus projetos, especialmente em cenários de microserviços e integrações locais. Esse tipo de configuração tem sido muito útil para testar ambientes complexos de maneira simples e eficiente.

    Gostaria de saber sua opinião: como você acha que o Docker pode ajudar na escalabilidade de aplicações em ambientes de produção, especialmente quando se trata de orquestração de containers e redes mais complexas?

    Recommended for youMicrosoft Certification Challenge #3 DP-100