在Docker卷中使用{.Task.Slot}

在Docker卷中使用{.Task.Slot},docker,docker-compose,docker-volume,Docker,Docker Compose,Docker Volume,我想使用{{.Task.Slot}语法将各个卷装载到Docker服务的每个副本: services: foo: ... volumes: - type: volume source: foo{{.Task.Slot}} target: /mnt deploy: mode: replicated replicas: 3 volumes: foo1: ... foo2: ...

我想使用
{{.Task.Slot}
语法将各个卷装载到Docker服务的每个副本:

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语法没有在
属性中解释,但在
目标
属性中,它工作顺利:

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

但这显然不是我需要的。

这是正确的方法:

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

volumes:
  foo:
    name: 'foo-{{.Task.Slot}}'
    ...
然后,扩展服务将根据需要创建卷


所有学分都归@larsks所有。

有帮助吗?我没有时间马上测试,太棒了。确实如此!谢谢!