Docker 專案部署與版本管理正確指南
前言
Docker 不僅只是啟動容器,正確的部署與版本管理流程能夠確保資料不遺失,系統保持清潔,操作效率最大化。本指南將針對常見的誤解提供更正確的概念與流程。
1. Docker 基礎概念正確理解
- 容器(Container)是非持久化的:容器本身會隨著
docker-compose down
而被刪除 - 數據卷(Volume)是持久化的:即使容器被刪除,掛載的卷中的資料依然保存
- 程式代碼修改,需要在服務器上獲取新代碼,重新構建容器,數據庫資料通常保存在卷中,不會受影響
2. Docker指令正確理解
- docker-compose down:停止並移除容器和網絡,但保留卷(資料)
- docker-compose down -v:停止並移除容器、網絡及卷(會導致資料遺失)
- docker-compose stop:僅停止容器運行,不移除容器
- docker-compose up -d:創建並啟動容器,設為背景運行
- docker-compose up -d --build:重新構建鏡像,並創建啟動容器
3. 正確的部署流程
本地開發環境:
- 進行代碼修改與測試
- 測試完成後提交代碼:
git commit -m "描述修改內容"
git push
服務器部署環境:
- SSH登入服務器
- 進入專案目錄
- 執行部署流程:
docker-compose down # 停止並移除當前容器
git pull # 拉取最新代碼
docker-compose up -d --build # 使用新代碼構建並啟動容器
4. 常見誤解與正確理解
-
誤解:每次部署都要清空數據庫
- 正確:只要不使用
-v
參數刪除卷,數據會自動保留
- 正確:只要不使用
-
誤解:
docker-compose down
只是停止容器- 正確:此命令會移除容器,如果只想停止不刪除,應使用
docker-compose stop
- 正確:此命令會移除容器,如果只想停止不刪除,應使用
-
誤解:在同一台機器上進行代碼提交又拉取
- 正確:通常本地開發機提交代碼,服務器拉取代碼
-
注意:使用
docker-compose down -v
會刪除所有卷中的資料,僅適用於需要完全重置的場景
5. 結論
正確理解Docker的容器和卷的概念,按照合理的部署流程操作,能夠確保系統高效運行,同時保證資料安全不遺失。記住,容器是臨時的,而數據卷是持久的,這是Docker部署的核心概念。