Docker – How to access a service that is in another stack

dockerdocker-swarm

I have a docker swarm configuration and in there I deployed two stacks (main and mon) I can expose a port in one stack and I can refer to it from another. However, I was trying to find a way of not doing that but instead have it access it using the 127.0.0.11 DNS.

In mon I have a service called grafana

Using https://docs.docker.com/docker-cloud/apps/service-links/#discovering-services-or-containers-on-another-stack which indicated that I can use the stack name to refer to it didn't work when I tried to ping grafana.mon it just returned invalid host name.

Best Answer

To do this, all you need is to make it use the same network, then they will be visible. In my case I defined a network called public, that is referred to externally by all my stacks

docker network create -d overlay --attachable public

From there in my docker-compose.yml file I have

networks:
  public:
    external:
      name: public

To access it, just use the service name.

Related Topic