Какие значения шаблонов Docker доступны при развертывании (создании) стека Docker? - PullRequest
0 голосов
/ 18 января 2019

Где я могу узнать, какие значения шаблонов доступны в моем кластере Docker UCP Swarm?

С шаблоном значениями я имею в виду такие вещи https://docs.docker.com/engine/reference/commandline/service_create/#create-services-using-templates.

У меня такое ощущение, что дерево, которое я обхожу, немного похоже на вывод docker inspect, но его меньший набор. Какие ключи? а какие выражения я могу использовать?

Кроме того, я часто получаю ошибки, такие как {{.Engine.Labels}}

<.Engine.Labels>: can't evaluate field Engine in type *template.Context

Итак, кажется, что контекст, в котором хранится дерево, это «Контекст». Насколько я знаю, это не концепция докера.

Пример того, как я пытаюсь использовать это:

version: "3.7"

services:
  bar:
    image: foo/bar:latest
    environment:
      - hostname={{.Node.Hostname}}
    deploy:
      replicas: 2

В docker inspect также есть флаг --format, где вы можете использовать тот же синтаксис go-template, но это не дерево, которое можно использовать в настройке стека докеров.

1 Ответ

0 голосов
/ 15 августа 2019

Я считаю , что context.go в репозитории Swarmkit несет ответственность.

Это означает, что у вас есть следующее:

    Service struct {
        ID     string
        Name   string
        Labels map[string]string
    }

    Node struct {
        ID       string
        Hostname string
        Platform Platform
    }

    Task struct {
        ID   string
        Name string
        Slot string
    }

например. .Service.ID, .Service.Labels.LabelNameGoesHere, .Task.Name и т. Д.

Я надеялся, что метки Node будут доступны и доступны для шаблонов docker-compose.yml, но, увы, нет.

...