Eu tenho uma configuração do docker swarm e nela implantei duas pilhas ( main
e mon
) posso expor uma porta em uma pilha e posso fazer referência a ela de outra. No entanto, eu estava tentando encontrar uma maneira de não fazer isso, mas acessá-lo usando o DNS 127.0.0.11.
Em mon
eu tenho um serviço chamadografana
Usando https://docs.docker.com/docker-cloud/apps/service-links/#discovering-services-or-containers-on-another-stack que indicou que eu posso usar o nome da pilha para se referir a ele não t trabalho quando tentei ping grafana.mon
, apenas retornou o nome do host inválido.
Para fazer isso, tudo que você precisa é fazê-lo usar a mesma rede, então eles estarão visíveis. No meu caso eu defini uma rede chamada
public
, que é referenciada externamente por todas as minhas pilhasA partir daí, no meu arquivo docker-compose.yml, tenho
Para acessá-lo, basta usar o nome do serviço.
Você precisa habilitar ambas as pilhas para se conectarem por meio de um tipo de rede de sobreposição e, em seguida, permitir que ambas as pilhas usem (pelo menos no serviço necessário) a rede de sobreposição que foi criada externamente para ambas as pilhas.
A rede de sobreposição deve ser criada antes que as pilhas subam, para que os serviços que precisam se conectar possam se 'anexar' a ela.
Crie a rede assim
Em seguida, faça referência ao nome do serviço em seu arquivo env, você pode verificar qual nome seus serviços têm chamando
Agora pegue o nome do serviço na coluna NAME. Ex: bar-stack_tar-service
Observe que seus serviços são prefixados pelo nome da pilha que você fornece ao implantar