本文主要讲 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…