劍指Offer-12 矩陣中的路徑
一、需求說明
公司原GitLab搭建在192.168.113.7機器上,採用yum安裝;現需要將GitLab遷移到192.168.113.53機器上並以Docker方式進行部署,需要保證資料的一致。
二、準備工作
-
在原GitLab主機中備份資料:
gitlab-rake gitlab:backup:create RAILS_ENV=production
備份後的檔案一般是位於/var/opt/gitlab/backups下, 自動生成檔名如:1605236222_2020_11_13_11.9.8_gitlab_backup.tar
-
檢視GitLab版本
方式一:登入到GitLab頁面,點選頭像左邊"幫助",可以在頁面中檢視GitLab版本;
方式二:在安裝GitLab的主機上執行以下命令,同樣能獲取到GitLab的版本號
[root@root7 ~]# gitlab-rake gitlab:env:info System information System: Current User: git Using RVM: no Ruby Version: 2.5.3p105 Gem Version: 2.7.6 Bundler Version:1.16.6 Rake Version: 12.3.2 Redis Version: 3.2.12 Git Version: 2.18.1 Sidekiq Version:5.2.5 Go Version: unknown GitLab information Version: 11.9.8 Revision: 48528bc Directory: /opt/gitlab/embedded/service/gitlab-rails DB Adapter: postgresql URL: http://gitlab.example.com HTTP Clone URL: http://gitlab.example.com/some-group/some-project.git SSH Clone URL: [email protected]:some-group/some-project.git Using LDAP: no Using Omniauth: yes Omniauth Providers: GitLab Shell Version: 8.7.1 Repository storage paths: - default: /var/opt/gitlab/git-data/repositories GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell Git: /opt/gitlab/embedded/bin/git
-
在另外一臺機器上,利用docker-compose部署GitLab,需要注意的是,新安裝的GitLab需要和原GitLab保持一致的版本,因為高版本的GitLab無法恢復低版本備份的資料。docker-compose部署GitLab教程
docker-compose.yml示例:
version: '3' services: gitlab: image: 'gitlab/gitlab-ce:11.9.8-ce.0' container_name: gitlab restart: always environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.113.53' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '80:80' - '2224:22' volumes: - './config:/etc/gitlab' - './logs:/var/log/gitlab' - './data:/var/opt/gitlab'
與教程中yml檔案有所不同,因為原GitLab採用80埠,所以這裡也採用80埠,
-
利用docker-compose命令進行編排,當容器成功啟動之後,將第一步中準備好的tar包拷貝到資料對映目錄下的backups目錄當中
執行docker-compose up -d命令之後,在瀏覽器中輸入ip:埠,若出現了設定新密碼頁面,不需要在頁面中設定新密碼,因為後面還需要進行資料恢復,所以不用設定新密碼;出現設定密碼頁面說明GitLab已部署成功,可以進行下一步。
[root@localhost backups]# pwd /home/work/docker-gitlab/data/backups [root@localhost backups]# ls 1605236222_2020_11_13_11.9.8_gitlab_backup.tar tmp
-
進入GitLab容器當中,執行以下命令恢復tar包中的資料:
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=1605236222_2020_11_13_11.9.8
BACKUP後的時間點要和原GitLab中匯出的tar包保持一致,執行命令後,中途會讓你選擇yes/no,一路yes即可,當命令執行結束之後,在瀏覽器中輸入遷移後GitLab的ip:埠,用原GitLab中的使用者可以正常登入,且專案資料都在其中。至此,GitLab遷移結束。