本文主要講 gitlab切換為docker版本,並且升級大版本(9.x-10.x)的較為快捷的方式
gitlab備份
檢視現有版本
sudo gitlab-rake gitlab:env:info
...
GitLab information
Version: 9.2.5
...複製程式碼
備份
在原伺服器執行
sudo gitlab-rake gitlab:backup:create RAILS_ENV=production
sudo sh -c `umask 0077; tar -cf /var/opt/gitlab/backups/$(date "+etc-gitlab-%s_%Y_%m_%d.tar") -C /etc/gitlab`複製程式碼
通過sudo ls -lah /var/opt/gitlab/backups | grep $(date "+%Y_%m_%d" )
檢視
-rw------- 1 git git 172M 11月 7 11:07 1510024070_2017_11_07_x.x.x_gitlab_backup.tar
-rw------- 1 root root 150K 11月 7 11:28 etc-gitlab-1510025309_2017_11_07.tar複製程式碼
移動到目標伺服器
使用scp
將備份檔案複製到目標主機
username
是使用者名稱ip
是來源主機ip
登陸目標主機,
sudo mkdir -p /data/gitlab/data/backups
scp username@ip:/var/opt/gitlab/backups/1510024070_2017_11_07_x.x.x_gitlab_backup.tar /data/gitlab/data/backups/1510024070_gitlab_backup.tar
scp username@ip:/var/opt/gitlab/backups/etc-gitlab-1510025309_2017_11_07.tar /data/gitlab/data/backups/
# 需要注意ssh的許可權問題,如果無許可權,要麼改配置,要麼就用winscp,ftp等進行上傳複製程式碼
gitlab恢復
docker-compose
version: `2`
services:
gitlab:
image: `gitlab/gitlab-ce:x.x.x-ce.0` # 將x.x.x-ce.0改成之前gitlab版本,否則無法恢復備份
restart: unless-stopped
ports:
- `80:80`
- `443:443`
- `22:22`
volumes:
- config:/etc/gitlab
- data:/var/opt/gitlab
- logs:/var/log/gitlab
volumes:
config:/data/gitlab/config
data:/data/gitlab/data
logs:/data/gitlab/log複製程式碼
docker-compose up -d
恢復資料
docker exec -it gitlab_gitlab_1 /bin/bash
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=1510024070 # 1510024070_gitlab_backup.tar 的前段
tar -xf /var/opt/gitlab/backups/etc-gitlab-1510025309_2017_11_07.tar -C /複製程式碼
訪問以下http://ip/如果正常,則執行`docker-compose down`
gitlab升級和漢化
version: `2`
services:
gitlab:
image: `anjia0532/gitlab-ce-zh:10.1.1-ce.0` # 漢化的10.1.1版本
restart: unless-stopped
ports:
- `80:80`
- `443:443`
- `22:22`
volumes:
- config:/etc/gitlab
- data:/var/opt/gitlab
- logs:/var/log/gitlab
volumes:
config:/data/gitlab/config
data:/data/gitlab/data
logs:/data/gitlab/log複製程式碼
參考連線:
部落格 anjia.ml/2017/11/07/…
掘金 juejin.im/post/5a0170…
簡書 www.jianshu.com/p/3ac4bd837…