[我正在寻找一种扩展docker-compose服务并看到--scale选项的方法,但是找不到任何方法来获取每个容器中的索引和计数。
这是一个简化的撰写文件:
version: '2.1'
services:
my_thing:
restart: always
build: .
entrypoint: /entry.sh
depends_on:
- database
database:
restart: always
image: postgres:12.1-alpine
...
如果我在条目中输入了docker-compose up my_thing --scale 5
,我希望查看我是哪个实例(1到5)以及总共有多少实例(在此示例中为5)。
我需要此,因为连接到API的“ my_thing”需要此信息来将事件委派给每个实例。
例如,我的输入可能是
echo "Hello I'm container $index of $count";
&然后运行docker-compose up my_thing --scale 5
(请注意,我不希望对计数进行硬编码)
然后每个容器分别运行输入和输出:
Hello I'm container 1 of 5
Hello I'm container 2 of 5
Hello I'm container 3 of 5
... and so on
如果有任何容器崩溃,我希望它在知道索引的情况下重新启动。
这是否可行,还是我需要找出一些替代方案或构建自己的工具?
编辑:如果有任何示例说明如何使用docker swarm这样做可能也有帮助。
您需要使用此命令
docker-compose up --scale my_thing=2
检查命令的帮助输出
docker-compose up --help
Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]
您可能也需要更新docker-compose版本。这是旧的方法
Set number of containers to run for a service.
Numbers are specified in the form `service=num` as arguments.
For example:
$ docker-compose scale web=2 worker=3
如果您想在docker-compose中定义它,则可以这样操作:
version: '2.4'
services:
logseq:
image: datalust/seq:5.1
scale: 3
environment:
- ACCEPT_EULA=Y