Docker 方式部署的應用的版本更新


前言

公司使用 Docker-Compose 的方式部署 Jenkins/Gitlab/Sonar/Confluence/Apollo/Harbor/ELK/MySQL 等一系列開發工具/測試數據庫。
而每過一段時間,我們就要評估這些軟件的新版本,再決定是否升級。

通過使用 Docker 部署這些應用,好處就是方便升級、部署、備份。

配置倉庫

首先,我們有一個基礎設施配置倉庫,專門存放各應用的部署配置文件,每個應用一個文件夾,里面有這些文件:

  1. docker-compose.yml:harbor 除外,因為它的 docker-compose.yml 是從它自己的配置文件生成的。
    1. 應用數據一般直接映射到 ./xxx_data,這樣數據和配置文件放在一起,方便統一管理。
  2. Dockerfile: 如果鏡像需要自己構建或者做定制,就會有 Dockerfile
  3. README.md:說明文檔,介紹部署、升級、備份的步驟與注意事項。
  4. 其他配置文件:如 harbor 需要 harbor.yml.

升級步驟

方案一

查看官方的升級說明,一般直接升級 Docker 鏡像就行。

有不兼容的更新時,官方基本都會給出說明和升級建議,比如先升級到某個中間版本,再逐步升級到最新版。
或者在升級前按說明去運行某個數據庫表結構修改的 sql。

通用的流程如下:

  1. 備份原有數據卷/映射文件夾,最好是直接和相應的配置文件一起備份。
    • 如果數據量太大不方便備份,你也很相信該軟件的升級不會破壞數據,也可以不備份。。
  2. 更新鏡像版本號(升級到最新版本,或者中間版本),然后 docker-compose up -d 啟動。
  3. 有問題再回退。。。

如果應用比較重要,需要保證穩定可用,可以先把數據拷到新虛擬機上並通過新鏡像部署,測試一段時間,確認沒問題了再正式更新。

方案二

使用軟件自帶的“導入導出/主從復制”這樣的功能,通過 api/cli/ui 進行數據的遷移。這樣的好處是不會遇到兼容性問題,但是前提是軟件本身有這樣的功能。

比如 Harbor 倉庫,基本都可以通過它的同步功能進行數據遷移。

例外是同步 API 有不兼容變更的情況,比如 harbor 1.8 升級到 1.10,同步 api 發生了變更,官方也沒給出兼容方案。
這時就只能退回到方案一了:備份數據,然后下載新的 harbor 安裝包進行部署。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM