MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Configurando vários contêineres Docker e MongoDB para execução no CircleCI


O problema está relacionado ao ponto de origem. Se você acessar localhost de dentro de um contêiner do Docker, o localhost apontará para o próprio docker, não para o servidor host e, portanto, a chamada não chegará ao host ou aos outros dockers.

Se todos os seus dockers estiverem na mesma máquina host, a maneira mais fácil de fazê-los conversar entre si via localhost é compartilhar uma rede entre os contêineres em execução. Primeiro execute o back-end normalmente e, em seguida, inicie os outros contêineres com o --net trocar:

docker run [other params] -d -p 8080:8080 --name service-app-container service_app_image docker run [other params] -p 3000:3000 --net="container:service-app-container" --name client-app-container client_app_image

Agora, todas as portas expostas e mapeadas por qualquer um dos contêineres que compartilham a rede devem ser acessíveis em localhost a partir de qualquer um dos dockers.
  • Para acessar o service-app-container de qualquer lugar, use machine:8080.
  • Para acessá-lo localmente a partir do servidor host, use localhost:8080.
  • Para acessá-lo internamente no aplicativo de serviço, use locahost:8080.
  • Para acessar o aplicativo de serviço do aplicativo cliente, use localhost:8080

O aplicativo cliente só será exposto pela porta 3000 para o mundo se você também o expuser na janela de encaixe que contém o contêiner. A porta exposta não deve ser a mesma, pois isso confunde a rede:

docker run [other params] -d -p 8080:8080 3001:3000 --name service-app-container service_app_image docker run [other params] -p 3000:3000 --net="container:service-app-container" client_app_image

Agora você pode acessar o aplicativo cliente de fora usando machine:3001.