使用docker-composer进行缩放并在主机名上附加一个数字?

我有一个docker-compose.yml

 master: build: . slave: image: master hostname: slave command: run_slave 

我怎样才能使docker-compose scale slave=5生成具有独特主机名的机器?

…例如这样的事情:

 slave1 slave2 slave3 slave4 slave5 

没有办法将主机名设置为该值。

如果你需要一个唯一的标识符,我会使用唯一的容器id,你可以通过运行$(hostname)来获得。

接受的答案是正确的,没有办法使用一个scale命令来设置它。 这是解决这个问题的一种方法。

不是一次缩放从站,而是一次缩放一个从站,使用环境variables在每个步骤设置主机名。 这确实打败了一些scale的方便,但至less在Compose 1.8.1中似乎起作用。

docker-compose.yml

 master: build: . slave: build: . hostname: slave${SLAVE_INDEX} command: run_slave 

运行它们:

 $ for i in $(seq 1 5); do SLAVE_INDEX=$i docker-compose scale slave=$i; done Creating and starting so_slave_1 ... done Creating and starting so_slave_2 ... done Creating and starting so_slave_3 ... done Creating and starting so_slave_4 ... done Creating and starting so_slave_5 ... done $ for i in $(docker ps --format '{{ .Names }}'); do > echo -n "$i: "; docker inspect --type container $i | jq -r '.[].Config.Hostname' > done so_slave_5: slave5 so_slave_4: slave4 so_slave_3: slave3 so_slave_2: slave2 so_slave_1: slave1 $ for i in $(seq 1 5); do docker exec -it so_slave_${i} hostname; done slave1 slave2 slave3 slave4 slave5