本文内容线上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 | vim /etc/gitlab/gitlab.rb |
(4)重新启动gitlab
1 | gitlab-ctl reconfigure |
数据迁移
(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 | apt-get update |
编写自动备份的脚本文件
1 | vim autobackup.sh |
设置crontab定时执行,前面表示多少分钟,几点钟执行,后面是脚本文件的路径
1 | vim /etc/crontab |
1 | service cron start |
选择reload或者restart