代碼放在Docker image還是掛載到volume

首先需要明確的是:Docker到底能夠帶來什麼樣的好處,Docker帶來輕量級虛擬化容器方面的優勢(資源利用率高,創建快捷,環境純粹) ?   還是鏡像帶來的優勢(便於部署,記錄容器狀態,持續集成等)?  確定了使用的場景,纔好說明代碼到底放到什麼地方更合適。

舉幾個例子,可以根據場景靈活的方式使用代碼和數據:

場景一:如果做好了所有代碼,想分發給其他使用者,這種無疑代碼放到image是最佳的,包括數據庫初始化腳本等。

場景二:如果是開發環境,代碼是用於調試,代碼不應該在image裏面,代碼最好是在本機電腦上,如MacOS,Windows,Linux的個人PC上,那麼就通過volume方式進行掛載是最方便的,修改代碼直接就可以進行調試。如果開發環境在服務器上,可以通過遠程mount的方式,mount到本機進行開發修改。

場景三:如果是測試環境,建議使用git方式,代碼不在image中,通過docker exec到容器內pull對應測試tag的代碼。當然也可以在宿主機pull,然後docker cp到對應的測試容器。

沒有哪種最優,只有最適合的。

===========================

docker部署兩種情形:

1)開發環境
由於開發環境代碼一直在變動,而且多人通過git協作,於是代碼都是放在外面,構建一個運行環境的image,然後代碼部分用volume映射進去,方便隨時調整。

2)生成環境
我們的生產環境比較獨特,一般都是給客戶安裝成品而不是自己的服務器,一方面爲了保護代碼,另一方面是減少不必要的麻煩,於是就把代碼都構建在image裏面,這樣直接在客戶那邊把鏡像運行起來就行,只是個下載的時間,也不需要其他操作。

在自己的服務器上,由於基本是內部演示之類,所以完全就是當做開發環境來對待的,參見第一條。

Docker嘛,既然可以虛擬環境,那麼怎麼合適怎麼用吧,目的就是開發的時候啓動的快+重新構建快,給客戶安裝的時候要儘可能的簡單。

===========================

  1. 鏡像相當於模板,開發代碼放鏡像的話,減低鏡像的複用性。

  2. 代碼放在image裏管理是否會造成本地存儲和網絡傳輸上不必要的負擔。

===========================

實用場景之一:

1、在開發環境,因爲code的頻繁變更,通過volume方式進行掛載方便。
2、代碼提交到git repo後,通過jenkins打包編譯,把編譯後的代碼包生成到docker image中,並打好對應的tag,上傳到docker registy。之後進入測試環境進行部署,測試。
3、通過paas ci後的docker image就可以直接在生產環境進行部署了。

————————————————
版權聲明:本文爲CSDN博主「erhaiou」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/erhaiou/article/details/84912104

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章