如何使用可选/附加参数扩展服务docker compose

如何使用可选/附加参数扩展服务docker compose,docker,docker-compose,Docker,Docker Compose,我有以下docker compose.yml文件: 版本:3.7 服务: 传感器: 图片:vs电源系统:最新版本 环境: COMPONENTNAME:$COMPONENTNAME (我自己写的图片,如果需要我可以提供) 我必须启动这项服务几次,所以我使用 COMPONENTNAME=Consumer docker compose up--scale sensor=5 图像执行如下操作: java-jar/app/someProgram.jar$COMPONENTNAME 在这种情况下,传感器既

我有以下
docker compose.yml
文件:

版本:3.7
服务:
传感器:
图片:vs电源系统:最新版本
环境:
COMPONENTNAME:$COMPONENTNAME
(我自己写的图片,如果需要我可以提供)

我必须启动这项服务几次,所以我使用

COMPONENTNAME=Consumer docker compose up--scale sensor=5

图像执行如下操作:

java-jar/app/someProgram.jar$COMPONENTNAME

在这种情况下,传感器既可以是消费者,也可以是生产者。如果它应该是生产者,则必须传入另一个变量,即容量

我的问题是:是否有一种方法可以将此服务扩展5倍,例如,我可以为第5个实例添加另一个参数

我在上面发现了类似的东西,但没有答案。 我还从某个地方读到,
docker compose
不支持这种行为,可以使用
docker swarm
。但是,我必须使用
docker compose
来完成此任务

如果无法按所述方式进行,我是否可以将我的
docker compose.yml
更改为以下内容:

版本:3.7
服务:
消费者:
图片:vs电源系统:最新版本
环境:
COMPONENTNAME:$COMPONENTNAME
制作人:
图片:vs电源系统:最新版本
环境:
COMPONENTNAME:$COMPONENTNAME
容量:$容量

并使用一个参数缩放
消费者
服务,例如4次,然后使用2个参数缩放
生产者
服务,例如3次?

缩放配置的含义是运行服务的实例数。在本例中,您希望运行4个消费者服务实例和1个生产者服务实例。映像是否相同并不重要——它仍然是一个不同的服务,因为它的配置发生了变化(在您的例子中是一个简单的环境变量)

而且,
docker compose
通常不“可编写脚本”

最佳做法是将其拆分为不同的配置,就像您建议的解决方案一样。
这种方法的另一个好处是,它允许您独立于消费者动态缩放生产者。

您似乎在这个问题上附加了几个图像文件,但Compose通常使用文本格式的YAML文件。你能用你正在使用的文件的实际文本而不是IDE的屏幕截图来替换图像吗?谢谢你的提示,我刚刚更改了它。