Использование {{.Task.Slot}} в томах Docker - PullRequest
0 голосов
/ 07 ноября 2019

Я хотел бы подключить отдельные тома к каждой реплике моей службы Docker с использованием синтаксиса {{.Task.Slot}}:

services:
  foo:
    ...
    volumes:
      - type: volume
        source: foo{{.Task.Slot}}
        target: /mnt
    deploy:
      mode: replicated
      replicas: 3

volumes:
  foo1:
    ...
  foo2:
    ...
  foo3:
    ...

Однако Docker завершается неудачно с:

service foo: undefined volume "foo{{.Task.Slot}}"

Кажется,что синтаксис Go не интерпретируется в свойстве source, а в свойстве target, он работает плавно:

services:
  foo:
    ...
    volumes:
      - type: volume
        source: foo1
        target: /mnt{{.Task.Slot}}

Но это, очевидно, не то, что мне нужно.

1 Ответ

0 голосов
/ 07 ноября 2019

Это правильный способ сделать это:

services:
  foo:
    ...
    volumes:
      - foo:/mnt
    deploy:
      mode: replicated
      replicas: 3

volumes:
  foo:
    name: 'foo-{{.Task.Slot}}'
    ...

Масштабирование службы затем создаст том (ы) по мере необходимости.

Все кредиты идут на @ larsks.

...