线上GitLab迁移至线下Docker环境

本文内容线上GitLab迁移至线下Docker环境

以下:

注意事项

进行迁移的GitLab版本必须保持一致,否则,在备份恢复的时候会出错,不过好在在官方docker镜像中基本有所有版本的docker镜像。

线下GitLab环境搭建

(1)拉取GitLab镜像

1
docker pull gitlab/gitlab-ee

(2)运行镜像容器

1
docker run --name='gitlab-ee'  -p 10022:22 -p 10080:80 --restart always --volume /opt/gitlab/config:/etc/gitlab --volume /opt/gitlab/backups:/var/opt/gitlab/backups --volume /opt/gitlab/logs:/var/log/gitlab --volume /opt/gitlab/data:/var/opt/gitlab/ gitlab/gitlab-ee

(3)进入配置目录修改配置

1
2
3
4
vim /etc/gitlab/gitlab.rb
external_url 'http://ip'
gitlab_rails['gitlab_ssh_host'] = 'ip'
gitlab_rails['gitlab_shell_ssh_port'] = 10022

(4)重新启动gitlab

1
2
gitlab-ctl reconfigure
gitlab-ctl restart
数据迁移

(1)在原gitlab中执行备份命令

1
gitlab-rake gitlab:backup:create

(2)找到备份文件复制到新gitlab中

1
find / -name *_gitlab_backup.tar

(3)在新gitlab中进行数据还原

1
gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5

(文件名不加_gitlab_backup.tar)

设置每日备份

gitlab支持通过命令对全部数据进行备份,以下

1
gitlab-rake gitlab:backup:create

但是我们不可能通过每天手动输入的方式来备份,这时我们便需要使用crontab来帮助进行定时任务

由于docker容器里面是没有安装crontab的,所以需要单独安装crontab

1
2
apt-get update
apt-get install cron

编写自动备份的脚本文件

1
2
3
vim autobackup.sh
chmod +x autobackup.sh
gitlab-rake gitlab:backup:create

设置crontab定时执行,前面表示多少分钟,几点钟执行,后面是脚本文件的路径

1
2
vim /etc/crontab
43 3 * * * root /var/opt/autobackup.sh
1
2
3
4
5
6
7
8
9
service cron start

service cron stop

service cron restart

service cron reload

service cron status

选择reload或者restart

-->