В моем docker-compose
у меня есть несколько классов клиента и рабочего, в частности клиент типа A, один типа B и другой типа C, с соответствующими рабочими классами. Каждый раз, когда я выполняю docker-compose
, мне нужно использовать опцию --scale
всего 6 раз, если я хочу использовать количество контейнеров, отличное от 1, для каждого класса: --scale cliA=2 --scale cliB=3 [...]
. Есть ли альтернатива наличию классов на моем docker-compose.yml
и вместо этого иметь унифицированный класс для клиента, который может быть по-разному масштабирован для каждого отдельного класса (и одинаковый для рабочего)?
Я рассуждал об этом и пришел к выводу, что возможно сделать что-то подобное (проверьте код в конце вопроса для справки по классу cli
):
cli:
image: client
// More stuff
scale: 4
environment:
CLASSID=A
scale: 2
environment:
CLASSID=B
// [...]
Этот docker-compose.yml
сможет создавать классы по мере необходимости, без необходимости каждый раз вызывать --scale
. Тем не менее, я проверил ссылку на docker-compose
, но я не нашел ничего, что помогло бы мне. Я нашел проницательный пост , в котором упоминалось, что я мог бы использовать docker-swarm
для выполнения этой задачи, но я думаю, что это выходит за рамки предмета (этот вопрос пытается ответить на упражнение).
Вот код для docker-compose.yml
файла:
version: '2'
services:
cliA:
image: client
build: ./client/
links:
- bro
environment:
- BROKER_URL=tcp://bro:9998
- CLASSID=A
// Similar description for cliB, cliC; only CLASSID changes
worA:
image: worker
build: ./worker/
links:
- bro
environment:
- BROKER_URL=tcp://bro:9999
- CLASSID=A
// Similar description for worB, worC; only CLASSID changes
bro:
image: broker
build: ./broker/
expose:
- "9998"
- "9999"
Любая помощь приветствуется.