2 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
Gotext/template
本身并不支持它??雌饋韉ockerize 工具提供了一些擴(kuò)展功能,但它們都不允許這樣做。
(我能想到的最接近的事情是kubernetes-helm支持從 Helm chart 讀取文件,但這是通過注入一個(gè)特殊的訪問器對(duì)象在 Go 級(jí)別實(shí)現(xiàn)的,該訪問器對(duì)象可以為模板代碼提供文件訪問 API,并且它有意限制為物理上位于 Helm chart 目錄中的文件。)

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
我看不到任何向模板添加函數(shù)的方法,因?yàn)?dockerize 不會(huì)在解析之前向模板公開添加函數(shù)。因此,您要么必須 (1) 將 acme.json 的內(nèi)容放入環(huán)境變量中,要么 (2) 修改 dockerize 以在模板中包含 jsonFileQuery 函數(shù)。
在運(yùn)行 dockerize 之前將 acme.json 的內(nèi)容添加到環(huán)境變量中——然后像示例中那樣訪問。這可以通過一個(gè)小的 go 程序來完成,添加到容器中并在 CMD dockerize 之前通過 CMD 運(yùn)行
分叉 dockerize 并更改 jsonQuery:分叉 dockerize 并更改template.go 的第 83 行:
從:parser, err := gojq.NewStringQuery(jsonObj)
到:?parser, err := gojq.NewFileQuery(jsonObj)
然后使用:{{with?$myJsonContent?:=?jsonQuery?"/opt/traefik/acme.json"?"toplevelobject"??}} ????#?extract?key?to?file? {{end}}
gojq.NewStringQuery()是 jsonQuery 模板函數(shù)背后的函數(shù)。gojq.NewFileQuery?()版本與 StringQuery 具有相同的簽名,但在輸入字符串的路徑處讀取文件,而不是將輸入字符串用作 json。
或者
將新的 jsonFileQuery 模板函數(shù)合并到 dockerize 中:向 dockerize 提交問題以將 jsonFileQuery 添加到模板函數(shù)中。似乎它可以設(shè)置為與 jsonQuery 相同,但與上面的區(qū)別很小。在template.go中,添加 jsonFileQuery 函數(shù)并將其分配給 generateFile() 中的 template.FuncMap{} 中的 jsonFileQuery。
- 2 回答
- 0 關(guān)注
- 144 瀏覽
添加回答
舉報(bào)