Running enterprise application as a service in docker swarm cluster | How services in swarm cluster communicate with each other?

I’ve played around with docker engine. But, I’m new to docker swarm cluster. Here is my scenario:

I’m trying to deploy an enterprise application as a service in swarm cluster using docker-compose and swarm. I defined my services in docker-compose.yml file and created a docker bundle using ‘docker-compose bundle’ command. And, deployed these services in the cluster using ‘docker deploy docker.dab’ command.

This is basically a High Availability setup where I’ll deploy multiple applications (services) in the cluster. These services are dependent on each other. Also, each of these application (services) need to expose multiple ports to the outside world.

I’m deploying these services in virtual machines. I’ve 3 VMs installed with Docker 1.12.1 and docker-compose 1.8.0

VM1 - Swarm master
VM2 - Node1
VM2 - Node2

My question here is how each service in the cluster should expose multiple ports, how communication among these services will happen and how these services can be accessed from outside world.

Also, please throw some light on swarm service registry (registrator), service discovery (consul/etcd/zookeeper).

Thanks in advance :slight_smile: