GITLAB:將儲存庫從舊 gitlab 移植到基於 Docker 的 gitlab
我在 RaspberryPi 上使用 Gitlab 已有幾年了。現在我想將儲存庫移動到基於 docker 的 Gitlab。最好的所有設置。
我已閱讀說明並嘗試了以下有關數據的方法:
- 我複制了以下內容:
- /etc/gitlab
- /var/opt/gitlab/git-data
和 gitlab 容器崩潰了…… 2. 我複制了以下內容:
- /etc/gitlab
- /var/opt/gitlab
和 gitlab 容器崩潰了…… 3. 我複制了以下內容:
- /etc/gitlab
和 gitlab 容器執行…
雖然 Gitlab 的設置位於*/etc/gitlab*,但沒有傳輸任何使用者或組數據。出現“第一個”螢幕,您應該在其中設置 root 密碼等。此外,我注意到新的 Gitlab 將儲存庫儲存在*/var/opt/gitlab/git-data/repositories/@hashed/下,而不是格式/var/opt/gitlab/git-data/repositories/group-or-user-name/reponame.(wiki.)git*像以前一樣。
所以我的問題是:
- 我必須將什麼複製到埠使用者和組設置?
- 如何移植儲存庫?
- 我必須複製/備份什麼才能在將來恢復 GITLAB?
編輯 (A) - 僅試驗容器
docker run \ --detach \ --rm \ --name gitlab \ --network host \ --volume ${PWD}/etc/gitlab:/etc/gitlab \ --volume ${PWD}/var/opt/gitlab:/var/opt/gitlab \ gitlab/gitlab-ce:latest
如果我用這個命令創建一個容器,用 GITLAB 做一些事情,而不是刪除容器並啟動一個新容器:這行得通。在這種情況下,兩個容器的 GITLAB 版本是相同的。
按照 c4f4t0r 的提示,我解決了以下問題:
在 RaspberryPi 上執行舊的 Gitlab v9.2.7 並創建備份 ( Backups )。請注意,除了備份本身之外,目錄*/etc/gitlab*也必須單獨備份。
由於恢復備份只能用於GitLab 完全相同的版本和類型 (CE/EE)(備份和恢復 GitLab),因此我創建了一個 Gitlab 容器
gitlab/glitlab-ce:9.2.7-ce.0
並在其中恢復了備份。我在 docker 主機上選擇了以下文件夾結構:
/mnt/gitlab_ws/ ├── backups/ <-- contains timestamp_9.2.7_gitlab_backup.tar ├── etc/gitlab/ <-- contains gitlab.rb; gitlab-secrets.json and ssh stuf ├── git-data/ <-- initially empty └── var/opt/gitlab/ <-- initially empty
- 我在 docker 容器中選擇了以下文件夾結構:
/ ├── etc/gitlab/ ├── mnt/gitlab_ws/backups/ <-- to be set in */etc/gitlab/gitlab.rb* ├── mnt/gitlab_ws/git-data/ <-- to be set in */etc/gitlab/gitlab.rb* └── var/opt/gitlab/
- 執行 gitlab
./run_gitlab.sh 9.2.7
- 確保正確的寫入權限。如果在主機端設置權限,容器內的權限可能會不一樣。您可能希望在啟動容器後設置正確的訪問權限:
docker exec -it gitlab chown -R git:git /var/opt/gitlab/ /etc/gitlab /mnt/gitlab_ws/git-data /mnt/gitlab_ws/backups
- 恢復備份
./restore_backup.sh
- 檢查 Gitlab 現在是否正常執行,顯示所有儲存庫和使用者(如果沒有,問題可能與*/etc/gitlab的訪問權限有關)並且儲存庫具有預期的內容(如果沒有,問題可能與/etc/gitlab/gitlab.rb中的git-data*路徑設置或訪問權限。)。
- 我將捲*/var/opt/gitlab/*綁定到我的主機,以便可以通過執行具有更高版本的 gitlab 容器來升級 Gitlab。請記住,只能在次要版本(更新)之間進行升級。
./run_gitlab.sh 9.3.0
啟動更高級別的 gitlab 後(容器狀態變為“健康” - 這可能需要一些時間),您現在應該重新配置 gitlab:
./reconfigure_gitlab.sh
從現在開始,您可以重複最後一步,直到達到您想要的版本。您也可以自動執行此操作;)
run_gitlab.sh
#/bin/bash GITLAB_WS_PATH='/mnt/gitlab_ws' if [ $# -eq 0 ] then TAG='latest' else TAG=$1-ce.0 fi docker run \ --name gitlab \ --detach \ --restart always \ --network host \ --volume $GITLAB_WS_PATH/git-data/:/mnt/gitlab_ws/git-data \ --volume $GITLAB_WS_PATH/var/opt/gitlab:/var/opt/gitlab \ --volume $GITLAB_WS_PATH/etc/gitlab:/etc/gitlab \ --volume $GITLAB_WS_PATH/backups:/mnt/gitlab_ws/backups \ gitlab/gitlab-ce:${TAG}
restore_backup.sh
#!/bin/bash DE="docker exec -it gitlab" ${DE} gitlab-ctl stop unicorn ${DE} gitlab-ctl stop sidekiq ${DE} gitlab-rake gitlab:backup:restore ${DE} gitlab-ctl reconfigure ${DE} gitlab-ctl restart
reconfigure_gitlab.sh
#!/bin/bash DE="docker exec -it gitlab" ${DE} gitlab-ctl stop ${DE} gitlab-ctl reconfigure ${DE} gitlab-ctl start