︿
Top

遷移與升級 GitLab 容器


別問!問就是要搞一堆有的沒的,GitLab 容器不像其他容器的遷移那樣單純,不是搬移目錄、docker-compose 設定檔和變更檔案目錄用戶權限就可以順利搬遷,總得來說你需要按照 GitLab 的備份還原標準操作流程才能成功遷移。

至於 GitLab 版本升級的則簡單許多,基於新一代的 GitLab container registry 從 GitLab 17.3 開始提供,而我手中現有的 GitLab 16.2.0 已不敷使用,因此著手進行升級事宜,容器建立的 GitLab 升級作業非常容易,僅需依照 GitLab 官方提供的 Upgrade Path 、按照版本替換 docker-compose file 裡引用的 image 即可。




實驗機器

先決條件:作業系統需事前安裝好 docker
本例作業系統為 Rocky Linux 9.2x64、docker 版本為20.10.24、原始 GitLab 版本 16.2.0-ee.0
  • 原始機器 192.168.88.206(hostname:docker-old)
  • 遷移目標機器 192.168.88.122(hostname:docker-new)




目錄結構

[root@docker-old opt]# tree -L 2
.
└── gitlab
    ├── config/
    ├── data/
    ├── docker-compose.yml
    └── logs/




遷移步驟

1. 複製原始機器的 docker-compose 設定檔到目標機器並啟動新的 GitLab 容器

2. WEBGUI 使用 admin 登入並修改一個臨時密碼自用(後期還原資料時會被覆蓋)

3. 於原始機器上匯出 GitLab 容器的數據,這個備份檔會被存在容器環境裡的
/var/opt/gitlab/backups


[root@docker-old ~]# docker exec -t container-name gitlab-backup create

4. 將備份數據檔傳至目標機器,本例為目標機器的新容器掛載目錄中

[root@docker-old data]# scp backups/1738572049_2025_02_03_16.2.0-ee_gitlab_backup.tar root@192.168.88.122:/opt/gitlab/data/backups/

5. 將原始機器上的 GitLab 設定資料複製覆蓋到新容器的 config 掛載目錄中

[root@docker-old ~]# scp /opt/gitlab/config/* root@192.168.88.122:/opt/gitlab/config/

6. 新容器裡恢復備份數據,注意還原指令那一行,後綴要拿掉!

[root@docker-new ~]# docker exec -it container-name /bin/bash
root@gitlab:/var/opt/gitlab/backups# chown git:git ./1738572049_2025_02_03_16.2.0-ee_gitlab_backup.tar
root@gitlab:/var/opt/gitlab/backups# gitlab-ctl stop unicorn
root@gitlab:/var/opt/gitlab/backups# gitlab-ctl stop sidekiq
root@gitlab:/var/opt/gitlab/backups# gitlab-backup restore BACKUP=1738572049_2025_02_03_16.2.0-ee
root@gitlab:/var/opt/gitlab/backups# gitlab-ctl reconfigure
root@gitlab:/var/opt/gitlab/backups# gitlab-ctl start unicorn
root@gitlab:/var/opt/gitlab/backups# gitlab-ctl start sidekiq
root@gitlab:/var/opt/gitlab/backups# gitlab-ctl restart
root@gitlab:/var/opt/gitlab/backups# exit

7. 瀏覽器開啟並登入新 GitLab 地址 http://yourIP_or_yourDOMAIN





升級步驟

1. 從 GitLab 容器裡匯出資料庫數據,這個備份檔會被存放在容器環境裡的
/var/opt/gitlab/backups


[root@docker-new ~]# docker exec -t container-name gitlab-backup create

2. 將備份資料庫與相關數據複製到任一暫存位置

[root@docker-new ~]# cp -rp /opt/gitlab/config/ /tmp/
[root@docker-new ~]# cd /opt/gitlab/backups
[root@docker-new backups]# cp 1751265833_2025_06_30_16.2.0-ee_gitlab_backup.tar /tmpDD

3. 參考 Upgrade Path 查閱升級版本所需經歷的大小版本



4. 停止 GitLab 容器

[root@docker-new backups]# cd /opt/gitlab/
[root@docker-new ~]# docker compose down

5. 修改 docker-compose 的 image 版本,從原本的 16.2.0 版本改為 16.3.9 版本

image: 'gitlab/gitlab-ee:16.3.9-ee.0'

6. 重新啟動 GitLab 容器,加上拉 image 和服務啟動的時間,需要稍待片刻…(可能是5分鐘左右)

[root@docker-new ~]# docker compose up -d

7. 瀏覽器開啟並登入 GitLab 後確認版本與功能是否正確


8. 重複 4~7 步驟,將版本依次更新上去,若沒問題,則可移除步驟 2 的備份檔案、並移除不再需要的 gitlab-ee docker images




本文內容參閱以下連結:

tomy

來自台灣的系統工程師,一直熱衷於 Open source 相關技術的學習、建置、應用與分享。

  • Image
  • Image
  • Image
  • Image
  • Image

0 Comments:

張貼留言