基于docker容器的gitlab迁移与数据恢复

将192.168.0.101上面的gitlab迁移到192.168.0.132上去,都使用的容器

第一步.在132机器上起一个gitlab的容器(版本需要跟101一致)

101上的gitlab容器是通过docker-compose.yml启动的,所以直接将101上的docker-compose.yml文件拷贝到132上再起容器

101机器上:

xieshan@dell:/data/gitlab$ cat docker-compose.yml 
version: '3'
services:
  web:
    image: 'gitlab/gitlab-ce:13.9.2-ce.0'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.xxx.com:8060'
    ports:
      - '8060:8060'
      - '2222:22'
      - '5005:5005'
    volumes:
      - '/data/gitlab/config:/etc/gitlab'
      - '/data/gitlab/logs:/var/log/gitlab'
      - '/data/gitlab/data:/var/opt/gitlab'
    shm_size: '256m'
xieshan@dell:/data/gitlab$ scp ./docker-compose.yml [email protected]:/home/docker/gitlab/   #手动复制过去也行

132机器上:

docker@132:~/gitlab$ cd /home/docker/gitlab/
docker@132:~/gitlab$ mkdir config data logs
docker@132:~/gitlab$ ls
backups  config  data  docker-compose.yml  logs
docker@132:~/gitlab$ cat docker-compose.yml 
version: '3'
services:
  web:
    image: 'gitlab/gitlab-ce: 13.9.2-ce.0'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.xxx.com:8060'
    ports:
      - '8060:8060'
      - '2222:22'
      - '5005:5005'
    volumes:
      - '/home/docker/gitlab/config:/etc/gitlab'
      - '/home/docker/gitlab/logs:/var/log/gitlab'
      - '/home/docker/gitlab/data:/var/opt/gitlab'
    shm_size: '256m'
docker@132:~/gitlab$ docker-compose up -d

第二步:在web界面上,通过192.168.0.132:8090访问进去,随便设置一个密码(后期会被覆盖)登录进去(这一步不可以省略)

第三步:在101上打包数据,并且将压缩包传递到132的/home/docker/gitlab/backups里面去

101机器上:

docker exec -t docker_web_1 gitlab-backup create        #在容器外执行

将在docker容器里里面的/var/opt/gitlab/backups/目录下产生一个1665386470_2022_10_10_13.9.2_gitlab_backup.tar的压缩包

传递压缩包(在101的容器内部)

root@ed414f9cc6e7:/var/opt/gitlab/backups# pwd
/var/opt/gitlab/backups
root@ed414f9cc6e7:/var/opt/gitlab/backups# ls
1665386470_2022_10_10_13.9.2_gitlab_backup.tar
root@ed414f9cc6e7:/var/opt/gitlab/backups# scp 1665386470_2022_10_10_13.9.2_gitlab_backup.tar [email protected]:/home/docker/gitlab/data/backups

第四步:传递配置文件

在101机器上:

xieshan@dell:/var/opt/gitlab$ cd /data/gitlab/
xieshan@dell:/data/gitlab$ ls
config        data  docker-compose.yml  logs
xieshan@dell:/data/gitlab$ sudo scp -r ./config/* [email protected]:/home/docker/gitlab/config

第五步:恢复数据跟文件

在132的容器内部:

docker exec -it gitlab_web_1 /bin/bash       #进入132的容器里面
cd /var/opt/gitlab/data/backups    #如果这个目录下没有那个压缩包,就吧外面的压缩包复制进来
chmod 777 1665386470_2022_10_10_13.9.2_gitlab_backup.tar
chown git.git 1665386470_2022_10_10_13.9.2_gitlab_backup.tar
gitlab-ctl stop unicorn    #关闭相关服务
gitlab-ctl stop sidekiq
gitlab-backup restore BACKUP=1665386470_2022_10_10_13.9.2    #开始恢复,一直yes就可以了,中间一些警告可以忽视(这个压缩包的名字不用写全,会自动补齐)
gitlab-ctl reconfigure    #重新加载配置
gitlab-ctl start unicorn    #重新启动相关服务
gitlab-ctl start sidekiq
gitlab-ctl restart        #重新启动gitlab服务
exit        #退出容器

然后可以在web界面上登录,看看数据是否都恢复了

参考博客:(3条消息) 【非常详细】docker中gitlab的数据迁移_seniorhui666的博客-CSDN博客

(3条消息) 基于docker的gitlab的迁移_kaen_w的博客-CSDN博客_docker gitlab 迁移

Backup | GitLab

猜你喜欢

转载自blog.csdn.net/weixin_43880061/article/details/127287150