Docker Community Forums

Share and learn in the Docker community.

Docker-compose and scaling with links


(Bhersh) #1

I’ve been playing with the latest docker-compose ( version 1.3.1 ) and have been trying to scale up a pair of services. In particular a webservice container with a link to mongo shard-routing server ( mongos server ). Ideally, each webservice container will have it’s own mongos container ( a mongo recommended configuration ).

I have a 2-node docker swarm managed with docker-machine ( 0.4.0-dev ). I can successfully bring up the webservice + mongos on a single node with compose. But when I try to scale services up to 2, I get a problem with the links. Compose seems to try to create links between my new webservice container and both mongos container:

$ docker-compose scale prodmongos=2 webservice=2
Starting new HTTPS connection (1): 192.168.99.100
Creating sample_prodmongos_2...
Starting sample_prodmongos_2...
Creating sample_webservice_2...
Unable to find a node fulfilling all dependencies: --link=sample_prodmongos_1:prodmongos_1 --link=sample_prodmongos_1:sample_prodmongos_1 --link=sample_prodmongos_1:stg_mongos.internal.tallac.com --link=sample_prodmongos_2:prodmongos_2 --link=sample_prodmongos_2:sample_prodmongos_2 --link=sample_prodmongos_2:stg_mongos.internal.tallac.com

My docker-compose file looks like:

webservice:
  image: "private/webservice:123"
  ports:
   ["8080"]
  links:
   ["prodmongos:mongos_host"]
prodmongos:
   image: "private/mongodb"
   command: [
        "mongos",
        "--configdb",
        "192.168.99.101:30001",
        "--port",
        "27017"
    ]

My expectation would have been that the sample_webservice_2 webservice container would only be linked to the sample_prodmongos_2 container and not to both the sample_prodmongos_1 and sample_prodmongos_2.

Is there a way to get around this behavior?

Thanks.