別問!問就是要搞一堆有的沒的,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
本文內容參閱以下連結:
0 Comments:
張貼留言