标题不言自明:我找不到描述组成文件中允许使用Go模板的文档。
换句话说,我想知道支持以下哪一项:
version: "3.7"
services:
whoami:
image: "containous/whoami"
environment:
- VALUE='{{.Name}}'
- NAME_{{.Name}}='NAME'
deploy:
labels:
- value={{.Name}}
- name_{{.Name}}=NAME
networks:
- {{.Name}}
Go模板是Go标准库的一部分。 docker-compose
是docker
的一部分,是单独的应用程序。
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.
}
祝你好运!