我正在研究利用Docker容器的雲部署。我們的應用程序將利用Apache Tomcat和PostgreSQL數據庫。如何使用唯一的數據庫連接字符串部署同一個Docker映像的多個實例
我的問題是關於在部署到雲中的羣集時爲多個客戶端配置和維護映像的最佳實踐。
我們希望爲衆多客戶使用單個基礎映像,而不是爲每位客戶維護一個映像。這意味着爲圖像的每個部署創建一個新的context.xml(爲Tomcat應用程序定義數據庫連接字符串),因爲每個客戶都需要連接到自己的數據庫。
我知道我可以手動將context.xml文件複製到已部署的容器,這很好,直到我們開始在具有多個副本的集羣中運行這些容器。這需要我們將此連接字符串複製到我們創建的每個副本,並且每次我們用新版本更新容器時都會重複此過程。
有沒有更好的解決方案,這個問題的許多容器運行相同的圖像,但每組容器需要自己的數據庫連接字符串?或者有沒有一種方法可以利用容器編排來更新同時運行相同實例的所有容器中的context.xml文件?
PS。我已經研究過使用環境變量,但context.xml文件是靜態的,不會從這些變量中加載值。至少這是我的理解。
我可能會誤解Kubernete Pod的工作原理。一個pod是否包含集羣上運行的所有副本?如果是這樣,kubectl cp命令應該將文件複製到所有副本然後更正? – CAmoruso
你不應該使用'kubectl cp'。當豆莢崩潰/死亡時,新的豆莢將從部署規範中創建,並且它們不會具有這些文件。您應該使用環境變量或ConfigMaps。 –