從我收集到的將 Angular 應用程式(或任何前端應用程式)容器化的最常見方法是將編譯的前端應用程式的源代碼和網路服務器(即 nginx)打包到一個容器中。
如果我們想通過添加重復的容器來擴展,每個容器都會有一個網路服務器和源代碼資產。
是否可以將這兩個組件分成兩個單獨的容器?這樣我們就可以擴展網路服務器,而不需要每個容器都擁有相同源代碼資產的副本(一遍又一遍)。
我意識到在大多數用例中,這可能不值得像我建議的那樣努力(也不實際)拆分。從教育的角度來看,我主要是好奇如何或是否可以做到這一點。此外,如果需要擴展的部分是網路服務器時,如果規模很大以盡量減少在每個容器中復制相同的靜態資產,這將是首選。
uj5u.com熱心網友回復:
如果您的瀏覽器應用程式代碼被編譯為靜態檔案,然后構建到影像中,您可以根據需要運行任意數量的基于該影像的容器,并且它們不會使用任何額外的存盤空間。所有容器的臨時檔案系統都將指向共享的底層映像。
關于容器要記住的重要一點是它包裝了一個行程,并且容器的檔案系統是相互隔離的。在您的假設設定中,擁有一個已編譯檔案的容器是沒有意義的,因為它不會運行行程并且其他容器將無法訪問這些檔案。
如果你期待像 Kubernetes 這樣的集群環境,它們非常擅長將 Docker 鏡像拉到需要運行的任何地方,但是推送“檔案”要復雜得多。特別是在這些環境中,我見過的兩種成功的方法是您在此處描述的一種,將前端代碼編譯成影像,或者從更傳統的托管環境存盤和提供瀏覽器應用程式(對于靜態檔案、物件像 Amazon S3 這樣的存盤運行良好),即使后端在容器中運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420975.html
標籤:
下一篇:Kubernetes多路徑重寫
