I'm using the docker-compose 1.6 with docker 1.10.1 and version 2 of docker-compose.yml.
As described in Networking in Compose, new network is created and all containers are assigned hostnames in it after docker-compose up
.
How can I reach additional (i.e. scaled) containers via hostnames after docker-compose scale <component>=2
?
Based on examples I've seen, assuming your container name is
db
, the scaled containers have the names ofdb_1
,db_2
, etc...When using "scale", internal docker dns service resolves only full names like projectname_db_1, projectname_db_2 and so on. Certainly, it would be better to provide in addition resolving service name + index without project name prefix.
I have answered that question based on python with the docker api.
You basically can use the
docker api
, to figure out what your project name and service name is.Then you can filter all available containers for the same
project
+service
to get other instances of yourself.With the lookup of the numbers you can finally construct the hostnames.
See How to get infos about ourself in a compose cluster (backup at gist.github.com)