簡體   English   中英

獨立的Dev和Production實例和數據庫

[英]Separate Dev and Production instances and database

我在服務器上托管了一個Web應用程序,它使用virtualEnv來分隔dev和prod實例。 兩個實例共享同一個postgres數據庫。 (都在同一台服務器上)

我是Docker的新手,我想用docker容器替換dev和prod實例,並鏈接到其dev或prod postgres容器(或類似的效果,以便開發中的代碼更改不會影響生產數據庫。 )

此方案的最佳設計是什么? 我應該將dev和prod容器映射到不同的端口嗎? 我可以為dev和prod容器使用1個dockerfile嗎? 我該如何處理2個postgres容器?

似乎您的要求不是很復雜,所以我認為您可以運行2對容器(每對都有一個應用程序容器和一個postgres容器)來實現這一點,其基本結構如下所述:

devContainer---> pgsDBContainer:<port_number1> ---> dataVolume1

prodContainer---> pgsDBContainer:<port_number2> ---> dataVolume2

每個容器對都有一個專用的端口號和一個專用的卷。 用於dev或prod應用程序以連接到相應的postgres數據庫的端口號,這應該很容易理解。 但是數量是另一回事。

請閱讀此管理容器文檔中的數據以了解容器數量。 正如您提到的"a code change in development will not affect production database" ,這意味着您應該為postgres容器分配兩個單獨的卷,因此數據庫的數據不會混淆。

我可以為dev和prod容器使用1個dockerfile嗎?

是的,您可以,正如我提到的那樣,在使用docker run命令啟動它們時,應為每個postgres容器提供不同的端口和卷配置。 docker run具有EXPOSE選項和VOLUME選項,供您配置端口號和卷位置。

提醒一下,在容器中運行數據庫時,可能需要考慮容器環境中的數據持久性,以避免由於移除容器而導致數據丟失。 有關容器數據持久性的一些討論可以在這里那里找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM