哪些Docker模板值在docker stack deploy(compose)中可用?

3
我在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

所以,看起来存储树的上下文是“Context”。就我所知,这不是docker的概念。

以下是我尝试使用的示例:

version: "3.7"

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

docker inspect命令中,还有一个--format标志,您可以使用相同的go-template语法,但它不是可用于docker stack设置的树形结构。
1个回答

1
我相信swarmkit仓库中的context.go负责此事。
这意味着你拥有以下内容:
    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等。

我希望节点标签能够在docker-compose.yml的模板中暴露和访问,但可惜并不行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接