如何简单地扩展docker-compose服务并传递索引并计数给每个?

问题描述 投票:0回答:1

[我正在寻找一种扩展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 docker-compose docker-swarm
1个回答
0
投票

您需要使用此命令

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
© www.soinside.com 2019 - 2024. All rights reserved.