如何使用docker compose而不使用--scale指定容器的数量?
在我的如何使用docker compose而不使用--scale指定容器的数量?,docker,docker-compose,replication,Docker,Docker Compose,Replication,在我的docker compose中,我有多个客户机和工人类,特别是a型客户机、B型客户机和C型客户机,以及各自的工人类。每次执行docker compose时,如果要为每个类使用不同于1的容器数量,我需要使用选项--scale总共6次:--scale cliA=2--scale cliB=3[…]。除了在mydocker compose.yml上创建类,而是为客户机创建一个统一的类,该类可以针对每个不同的类进行不同的缩放(对于工人也是如此),还有其他方法吗 我对此进行了论证,并得出结论,可以这
docker compose
中,我有多个客户机和工人类,特别是a型客户机、B型客户机和C型客户机,以及各自的工人类。每次执行docker compose
时,如果要为每个类使用不同于1的容器数量,我需要使用选项--scale
总共6次:--scale cliA=2--scale cliB=3[…]
。除了在mydocker compose.yml
上创建类,而是为客户机创建一个统一的类,该类可以针对每个不同的类进行不同的缩放(对于工人也是如此),还有其他方法吗
我对此进行了论证,并得出结论,可以这样做(检查问题末尾的代码,以获取cli
类的参考):
这个docker compose.yml
将能够根据需要创建类,而无需每次调用--scale
。然而,我已经检查过了,但是我没有发现任何对我有帮助的东西。我发现了一个提到我可以使用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"
非常感谢您的帮助。服务是关于如何运行容器以及所有设置的定义。如果需要使用不同设置运行多个容器,则需要不同的服务。您可以使用Yaml别名和锚定语法有效地将一个服务复制到另一个服务,然后应用更改,例如:
version: "3"
services:
app1: &app1
image: app
environment:
app: 1
app2:
<<*app1
environment:
app: 2
然后可以使用各种环境文件进行部署:
$ cat envA.sh
CLASSID=A
SCALE=4
$ cat envB.sh
CLASSID=B
SCALE=2
$ set -a && . ./envA.sh && set +a && docker-compose -p projA up
$ set -a && . ./envB.sh && set +a && docker-compose -p projB up
服务是如何运行容器以及所有设置的定义。如果需要使用不同设置运行多个容器,则需要不同的服务。您可以使用Yaml别名和锚定语法有效地将一个服务复制到另一个服务,然后应用更改,例如:
version: "3"
services:
app1: &app1
image: app
environment:
app: 1
app2:
<<*app1
environment:
app: 2
然后可以使用各种环境文件进行部署:
$ cat envA.sh
CLASSID=A
SCALE=4
$ cat envB.sh
CLASSID=B
SCALE=2
$ set -a && . ./envA.sh && set +a && docker-compose -p projA up
$ set -a && . ./envB.sh && set +a && docker-compose -p projB up
这个问题在我看来像是重复的。你能解释一下你的问题与我的问题有什么不同吗?你链接的问题(我在声明中也链接了这个问题)的OP只想在多个容器中运行单个图像;我需要在多个容器中运行一个图像,但要更改一些参数。这个问题对我来说像是重复的。你能解释一下你的问题与我的问题有什么不同吗?你链接的问题(我在声明中也链接了这个问题)的OP只想在多个容器中运行单个图像;我需要在多个容器中运行一个映像,但需要更改一些参数。第二种方法是我正在寻找的方法,将不同类型的客户端统一到一个容器中。我不知道教授们是否在想这个答案,但这肯定是有道理的。谢谢第二种方法是我正在寻找的,将不同类型的客户机统一为一个。我不知道教授们是否在想这个答案,但这肯定是有道理的。谢谢