当前位置: 首页 > news >正文

迁移GitLab,在新Linux中用Docker重新部署GitLab备份还原

1、背景

将 GitLab 10 从 CentOS 7服务器迁移至天翼云定制的 CTyunOS 23 服务器时,由于原版本过低无法直接安装,我们选择在新服务器上通过 Docker 容器方式部署 GitLab。

2、安装 Docker

2.1、修改 yum 配置,安装 Docker

sudo vi /etc/yum.repos.d/docker-ce.repo
# 粘贴下面这段 start
[docker-ce-stable]
name=Docker CE Stable
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable
enabled=1
gpgcheck=0
# end
sudo yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker

2.2、配置 Docker 镜像仓库,拉取 GitLab 10 镜像

vi /etc/docker/daemon.json
# 粘贴下面这一段 start
{"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://dockerhub.azk8s.cn","https://mirror.ccs.tencentyun.com","https://registry.cn-hangzhou.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","https://docker.m.daocloud.io","https://noohub.ru","https://huecker.io","https://dockerhub.timeweb.cloud"]
}
# end
systemctl daemon-reexec
systemctl restart docker

3、安装配置 GitLab 10

3.1、拉取GitLab 10 镜像

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

3.2、执行运行脚本

#!/bin/bashset -eecho "📁 创建持久化目录(如不存在)..."
mkdir -p /usr/program/gitlab/{config,logs,data,backups}echo "🚀 启动 GitLab 容器..."
docker run --detach \--hostname gitlab.local \--publish 9191:80 \--publish 2222:22 \--name gitlab \--restart always \--volume /usr/program/gitlab/config:/etc/gitlab \--volume /usr/program/gitlab/logs:/var/log/gitlab \--volume /usr/program/gitlab/data:/var/opt/gitlab \--volume /usr/program/gitlab/backups:/var/opt/gitlab/backups \gitlab/gitlab-ce:10.8.4-ce.0echo "✅ GitLab 启动完成,Web UI 请访问:http://<你的IP>:9191"

3.3、修改 GitLab 配置文件

打开/home/breathhome/gitlab/config/gitlab.rb文件,根据需要配置
 

# 配置WebUI地址
external_url 'http://x.x.x.x:9191'
nginx['listen_port'] = 80# 配置ssh映射地址,这里映射的2222和创建容器的2222对应
gitlab_rails['gitlab_ssh_host'] = 'x.x.x.x'
gitlab_rails['gitlab_shell_ssh_port'] = 2222# 配置邮件
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp地址"
gitlab_rails['smtp_port'] = 端口
gitlab_rails['smtp_user_name'] = "邮箱"
gitlab_rails['smtp_password'] = "密码"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = '邮箱'
gitlab_rails['smtp_domain'] = "smtp_domain"# 配置禁止shell登录
gitlab_rails['gitlab_shell']['authorized_keys_enabled'] = false

配置完后,执行命令:

docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart

3.4 端口配置与初始密码设置

  1. 端口配置

    • 在平台安全组中开放9191和2222端口
    • 若服务器启用了防火墙,需同步在防火墙中开放上述两个端口
  2. 密码初始化

    • 通过浏览器访问 http://x.x.x.x:9191
    • 按提示修改初始密码

4、GitLab 备份还原

4.1、备份,传输

在源服务器停止 GitLab 服务,并对 GitLab 数据进行备份,备份命令:

gitlab-rake gitlab:backup:create

备份完成后会生成一个 1750250601_2025_06_18_10.8.4_gitlab_backup.tar 命名的文件,使用rsync(可以断点续传)传输到目标服务器配置的 /usr/program/gitlab/gitlab_backup 目录

rsync -P --rsh=ssh 1750250601_2025_06_18_10.8.4_gitlab_backup.tar root@x.x.x.x:/usr/program/gitlab/gitlab_backup

4.2、还原

备份文件提权,不然在还原过程中会出现权限不够无法解压的问题,还原数据:

chmod 777 /usr/program/gitlab/backups/1750250601_2025_06_18_10.8.4_gitlab_backup.tar
docker exec -it gitlab gitlab-ctl stop unicorn
docker exec -it gitlab gitlab-ctl stop sidekiq
docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1750234554_2025_06_18_10.8.4
# 还原过程中输入 yes 继续,完成后启动gitlab
docker exec -it gitlab gitlab-ctl start

5. 结束

迁移过程大致如此,期间遇到了一些问题需要特别注意。由于国内政策限制,部分Docker镜像仓库已不可用,建议自行搜索最新的可用仓库地址,切勿直接使用文章中可能已失效的仓库地址。

迁移完成后,还需更新项目关联的Git远程仓库地址。通过GitLab Web UI获取新的仓库URL后,使用命令git remote set-url origin <新远程仓库URL>进行更新。

http://www.lryc.cn/news/582118.html

相关文章:

  • C#中的BindingList有什么作用?
  • 【机器学习深度学习】多分类评估策略:混淆矩阵计算场景模拟示例
  • 亚马逊运营进阶指南:如何用AI工具赋能广告运营
  • 诊断工程师进阶篇 --- 车载诊断怎么与时俱进?
  • English Practice - Day 2
  • vite打包的简单配置
  • react状态管理库 - zustand
  • 风电自动化发电中的通信桥梁:CAN主站转MODBUS TCP网关解析
  • 【MyBatis】MyBatis与Spring和Spring Boot整合原理
  • 5种方法将联系人从iPhone转移到OnePlus
  • C++--map和set的使用
  • 仿mudou库one thread oneloop式并发服务器
  • 达梦数据库的信息查询
  • Redisson 分布式锁原理解析
  • Navicat Premium可视化工具使用查询控制台优化SQL语句
  • 商品中心—库存分桶高并发的优化文档
  • 力扣 3258 统计满足 K 约束的子字符串数量 I 题解
  • Java工具类,对象List提取某个属性为List,对象List转为对象Map其中某个属性作为Key值
  • RAG实战指南 Day 8:PDF、Word和HTML文档解析实战
  • UI自动化常见面试题
  • day08-Elasticsearch
  • 云计算领域“XaaS”是什么?
  • Python编译器(Pycharm Jupyter)
  • 第4.2节 Android App生成追溯关系
  • 【Mac 从 0 到 1 保姆级配置教程 19】- 英语学习篇-我的英语工作流分享(AI 辅助学习)
  • JavaWeb笔记07
  • 比亚迪6月销量38.25万辆,同比增长11.9%
  • window显示驱动开发—BGRA 扫描输出支持
  • 特伦斯T1节拍器,突出综合优势与用户体验
  • Python 包管理工具 uv