Как просто масштабировать docker -композиционную услугу и передавать индекс и считать каждому? - PullRequest
0 голосов
/ 02 марта 2020

Я ищу способ увеличить docker -компонентную службу и увидел опцию --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 роем, то ма Тоже помогу.

1 Ответ

0 голосов
/ 02 марта 2020

вам нужно использовать эту команду

docker-compose up --scale my_thing=2

проверить вывод справки команды

 docker-compose up --help
Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]

, возможно, вам также потребуется обновить версию docker comppose. Это старый способ сделать это

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
...