INTRODUÇÃO
Ao usar o docker para criar containers para a sua solução, pode haver a necessidade de uma aplicação A dentro de um container A acessar outra aplicação B em outro container B ou no próprio host hospedeiro. Se chamar pela URL localhost:X (onde X é a porta), a sua aplicação A que está dentro do container A, procurará por esse serviço no próprio container A e que não existirá! Pois não tem nenhuma aplicação registrada na porta X no container A. Pois essa aplicação estará no container B!
EXEMPLO
Container A
Aplicação: Web (Pode ser uma aplicação frontend React/Vue/Angular)
Porta: 3000
Container B
Aplicação: Banco de dados PostgreSQL
Porta: 5432
Observação:
Nesse exemplo, estamos simplificando a comunicação para explicar os conceitos desse artigo. Logicamente numa aplicação real, teremos mais containers e camadas de aplicações, como por exemplo o frontend num container X chamando o backend no container Y e depois chamando o banco de dados num container Z.
OBJETIVO
A aplicação Web A acessar o banco de dados no container B.
PROBLEMA
A aplicação Web A deseja acessar o banco de dados que está em outro container, mas se acessar chamando a URL localhost e na porta 5432, dará erros, de conexão recusada, pois no container A não possui nenhuma aplicação registrada na porta 5432.
SOLUÇÃO
Usar a URL: host.docker.internal nas suas configurações locais para o docker entender que é para buscar fora do próprio container que está efetuando a chamada. No exemplo acima, usariamos a URL com porta, como host.docker.internal:5432.

Nenhum comentário:
Postar um comentário