docker-gitlab 的数据迁移

这篇文章介绍下如何将容器化的 gitlab 进行数据迁移。

gitlab是什么
GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

gitlab迁移背景
目前个人环境上跑了一个单机版的 gitlab, 运行命令为:

sudo docker run -d \
   --env GITLAB_OMNIBUS_CONFIG="external_url 'http://xx:8181'" \ 
   --publish 8181:8181 \ 
   --name gitlab \ 
   --restart always \ 
   --volume /app/gitlab/config:/etc/gitlab \ 
   --volume /app/gitlab/logs:/var/log/gitlab \ 
   --volume /app/gitlab/data:/var/opt/gitlab \ 
gitlab/gitlab-ce:9.5.1-ce.0

目前我们需要做的就是将环境配置和数据内容还原到新的环境中去。

迁移过程
备份数据库和配置文件,将数据文件与配置文件传输到新机器上。

docker exec -t  gitlab-rake gitlab:backup:create

备份文件位于宿主机的 /app/gitlab/data/backups 目录下。

配置文件位于 /app/gitlab/config 文件夹内。

新机器上运行相同的 run 命令

运行容器

docker run xxx

停止容器

docker stop gitlab 

数据文件和配置文件替换

mv 1493107454_2017_04_25_9.1.0_gitlab_backup.tar  /app/gitlab/data/backups 
mv config /app/gitlab/config

重新运行容器,进入容器后断开 gitlab 与 数据库的连接

进入容器

docker exec -it  /bin/bash
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

验证

gitlab-ctl status

还原备份:

重建数据库

sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2017_04_25_9.1.0

重启 gitlab 并验证:

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

大功告成。

参考
Backing up and restoring GitLab

你可能感兴趣的:(git)