1. 程式人生 > 實用技巧 >劍指Offer-12 矩陣中的路徑

劍指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遷移結束。