这篇文章介绍下如何将容器化的 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备份文件位于宿主机的目录下。配置文件位于文件夹内。
新机器上运行相同的 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
大功告成。
参考资料
「滋磁一下」