基于Docker的gitlab迁移&备份&配置域名

  • Post author:
  • Post category:其他




基于Docker的gitlab迁移&备份&配置域名

备份:参考下文


docker容器里的Gitlab备份


备份完成后,首先进入容器查看当前git版本

#进入容器
docker exec -it gitlab-test /bin/bash
#查看版本号
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

在这里插入图片描述

我的git版本是12.2.5,在新机器上(我这里是另外一个容器),安装相同版本gitlab,使用docker pull拉取镜像

docker pull gitlab/gitlab-ce:12.2.5-ce.0

在这里插入图片描述

安装完成后启动容器并设置端口映射、指定容器名等

docker run \
--privileged=true \
--hostname 192.168.1.25 \
--detach \
--publish 1180:80 \
--publish 11443:443 \
--publish 1122:22 \
--name gitlab-test \
--restart unless-stopped \
--volume /home/gitlab-test/config:/etc/gitlab \
--volume /home/gitlab-test/log:/var/log/gitlab \
--volume /home/gitlab-test/data:/var/opt/gitlab \
gitlab/gitlab-ce:12.2.5-ce.0
#--hostname 指定服务器IP
#--publish 设置端口映射
#--name 指定容器名称
#--restart 指定重启策略
#--volume 挂载目录

这里映射180端口,需要放开该端口,若已关闭防火墙可忽略

#开放180端口
firewall-cmd --permanent --zone=public --add-port=180/tcp
#立即生效
firewall-cmd --reload

访问gitlab: http://192.168.1.25:180

在这里插入图片描述



至此,新gitlab安装完毕。



开始迁移

我这里是新建一个gitlab容器,属于同一台服务器内,可以使用docker cp 移动备份文件,若迁移对象为不同服务器可使用scp 或 ftp

1.上面已经把备份文件拷贝到本机,将备份文件和gitlab.rb、gitlab-secrets.json分别拷贝到容器中(以下操作在宿主机上)

#将备份文件拷贝到gitlab容器内,gitlab-test为目标容器名称
docker cp /data2/git-back/1641520067_2022_01_07_12.2.5_gitlab_backup.tar  gitlab-test:/var/opt/gitlab/backups/
#将rb和json文件分别拷贝到目标容器指定目录下并修改名称为gitlab.rb和gitlab-secrets.json
docker cp /data2/git-back/gitlab-secrets.json.bak_22.01.07  gitlab-test:/etc/gitlab/gitlab.rb
docker cp /data2/git-back/gitlab.rb.bak_22.01.07  gitlab-test:/etc/gitlab/gitlab-secrets.json

进入容器查看相关文件权限,将rb和json文件修改为600

#进入容器
docker exec -it gitlab-test /bin/bash
#修改权限,进入到rb目录,修改rb和json文件权限
#(以下操作在新git的容器内)
cd /etc/gitlab
chmod 600 gitlab.rb
chmod 600 gitlab-secrets.json
#进入备份文件目录,将备份文件权限修改为777,不然可能恢复的时候会出现权限不够,不能解压的问题
cd /var/opt/gitlab/backups/
chmod 777 1641520067_2022_01_07_12.2.5_gitlab_backup.tar

执行命令停止相关数据连接服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

执行命令从备份文件中恢复gitlab

gitlab-rake gitlab:backup:restore BACKUP=备份文件编号
例如我的是:gitlab-rake gitlab:backup:restore BACKUP=1641520067_2022_01_07_12.2.5
#一定是自己的备份文件编号,一定是只有编号,去掉“_gitlab_backup.tar” 

敲完命令之后会出现两次交互页面,都输入yes

最后,在容器内启动gitlab

gitlab-ctl start

使用ip:端口访问,原git所有用户都可登录且密码不变,所有项目数据完整的迁移了过来。

在这里插入图片描述

在这里插入图片描述

原git中拉取代码使用的域名,为方便后续操作,修改为域名访问,与原域名关联

以下操作在宿主机上

#在宿主机找到nginx配置文件
cd /etc/nginx/conf.d/
vim gitlab.com.conf #这里选择你自己的nginx配置文件,或者新建.conf文件
#添加或修改如下配置,180是我这里的映射端口,且防火墙已放行。
server {
        listen 80;
        server_name git.work.ubisor.com;

    location / {
                proxy_pass    http://127.0.0.1:180/;
                proxy_set_header  X-Real-IP        $remote_addr;
                proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

}
#保存退出

重启nginx配置生效

systemctl restart nginx

使用域名访问gitlab,


至此,完结!


经测试,一切功能正常!



版权声明:本文为x_1108原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。