docker-compose文件中允许使用Go模板?

问题描述 投票:0回答:1

标题不言自明:我找不到描述组成文件中允许使用Go模板的文档。

换句话说,我想知道支持以下哪一项:

version: "3.7"


services:
  whoami:
    image: "containous/whoami"
    environment:
      - VALUE='{{.Name}}'
      - NAME_{{.Name}}='NAME'
    deploy:
      labels:
        - value={{.Name}}
        - name_{{.Name}}=NAME
    networks:
      - {{.Name}}
docker-compose go-templates
1个回答
0
投票

Go模板是Go标准库的一部分。 docker-composedocker的一部分,是单独的应用程序。

1。声明模板。

您可以在const代码中将模板声明为Go,也可以将其保存在文件中。

const composeTemplate = `version: "3.7"

services:
  whoami:
    image: "containous/whoami"
    environment:
      - VALUE='{{.Name}}'
      - NAME_{{.Name}}='NAME'
    deploy:
      labels:
        - value={{.Name}}
        - name_{{.Name}}=NAME
    networks:
      - {{.Name}}
`

2。配置您的模板。

创建将被填充并用于执行模板的配置类型。

type Config struct {
    Name string
}

3。使用配置执行模板。

conf := &Config{Name: "MyService"}

tpl, err := template.New("myservice").Parse(composeTemplate)
if err != nil {
    // Handle error.
}

var output bytes.Buffer
err = tpl.Execute(&output, conf)
if err != nil {
    // Handle error.
}

4。将您的输出写入文件。

err = ioutil.WriteFile("myservice-compose.yml", output.Bytes(), 0644)
if err != nil {
    // Handle error.
}

(Go Playground)

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.