在一些 asp.net 核心專案中,我經常在 appsetting.json 檔案中看到這樣的內容:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"UserName" : "${userName}"
}
${userName}看起來像一個可以被 docker/k8s 等交換的變數模板,但它是如何作業的,因為在應用程式內部,我仍然訪問 UserName 為:
var userName = _configuration["UserName"]; // output is "${userName}"
那么docker會改變變數模板嗎?是否直接更新appsetting.json檔案,例如docker會使用dockerfile中ENV的值掃描appsetting.json檔案并${userName}與實際值交換?
uj5u.com熱心網友回復:
這看起來像是針對 appsettings.json 中的“UserName”鍵存盤的內插字串。
您將依賴代碼(C# 等)在運行時替換用戶名值,而不是與容器運行時有任何關系。
當通過各種替代方案(Docker、Docker Compose、Kubernetes 等)實體化容器時,您將在創建容器時傳入環境變數(在 K8s 的情況下為 Pod)。
這個(環境變數的注入)是如何完成的,取決于你如何啟動你的容器。這個想法是相同的,但語法可能會有所不同,具體取決于您使用的是“docker run”、“docker compose”還是“kubernetes”等。但原理是一樣的。
對于 .NET Core 容器,您將依賴“優先順序”來派生 ConfigurationManager 的值,例如https://devblogs.microsoft.com/premier-developer/order-of-precedence-何時配置-asp-net-core/
容器不會修改/注入/交換已部署容器中的底層代碼庫。
但是,它們可以在實體化時將環境變數注入容器/pod。
不確定我是否正確解釋了您的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/440790.html
標籤:json 码头工人 asp.net 核心 Kubernetes
上一篇:在.net核心Razor頁面中級聯html.DropDownListFor
下一篇:剃刀頁面選單部分從資料庫獲取
