2 回答

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

TA貢獻1877條經驗 獲得超6個贊
我看不到任何向模板添加函數的方法,因為 dockerize 不會在解析之前向模板公開添加函數。因此,您要么必須 (1) 將 acme.json 的內容放入環境變量中,要么 (2) 修改 dockerize 以在模板中包含 jsonFileQuery 函數。
在運行 dockerize 之前將 acme.json 的內容添加到環境變量中——然后像示例中那樣訪問。這可以通過一個小的 go 程序來完成,添加到容器中并在 CMD dockerize 之前通過 CMD 運行
分叉 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 模板函數背后的函數。gojq.NewFileQuery?()版本與 StringQuery 具有相同的簽名,但在輸入字符串的路徑處讀取文件,而不是將輸入字符串用作 json。
或者
將新的 jsonFileQuery 模板函數合并到 dockerize 中:向 dockerize 提交問題以將 jsonFileQuery 添加到模板函數中。似乎它可以設置為與 jsonQuery 相同,但與上面的區別很小。在template.go中,添加 jsonFileQuery 函數并將其分配給 generateFile() 中的 template.FuncMap{} 中的 jsonFileQuery。
- 2 回答
- 0 關注
- 136 瀏覽
添加回答
舉報