GitLab Docker 相关(备份、迁移、升级)

Gitlab数据备份

docker exec -it gitlab /bin/bash

# 备份数据库和配置文件
root@gitlab:/# gitlab-rake gitlab:backup:create

# 查看备份文件
root@gitlab:/# ls /opt/gitlab/gitlab/data/backups/
1614663214_2021_03_02_11.1.4

备份文件命名由备份时间和当前gitlab版本组成

备份文件路径:

容器内:/var/opt/gitlab/backups/

若生成docker容器时做过数据卷则数据在数据卷中:/opt/gitlab/gitlab/data/backups/


Gitlab数据迁移

注:数据迁移需使用相同版本,版本查看可使用命令cat /opt/gitlab/embedded/service/gitlab-rails/VERSION查看

将备份好的数据,放入新服务器的备份文件路径下

docker exec -it gitlab /bin/bash

# 停止数据相关服务
root@gitlab:/# gitlab-ctl stop unicorn
root@gitlab:/# gitlab-ctl stop sidekiq

# 验证
root@gitlab:/# gitlab-ctl status

# 给备份文件赋予权限
root@gitlab:/# chmod 777 /var/opt/gitlab/backups/1614663214_2021_03_02_11.1.4_gitlab_backup.tar

# 还原数据库和配置文件
root@gitlab:/# gitlab-rake gitlab:backup:restore BACKUP=1614663214_2021_03_02_11.1.4
...
Do you want to continue (yes/no)? yes
...
Do you want to continue (yes/no)? yes

# 重启服务
root@gitlab:/# gitlab-ctl restart

# 检查
gitlab-rake gitlab:check SANITIZE=true

GItlab升级

注:因为本人原版本为中文社区的汉化版本,作者没有提供继续升级的版本,升级官方版本或着其他的中文汉化版本时会出现一些问题,若非官方版本的本人建议先备份数据,然后使用官方的同一个版本进行数据迁移,然后再升级。按照官方的说法,gitlab允许小版本直接升级,大版本需要阶段升级。跨版本升级示例:11.0.x -> 11.11.x -> 12.0.x -> 12.10.x -> 13.0.x

# 本人用的版本是汉化后的11.1.4

# 获取新版镜像
docker pull gitlab/gitlab-ce:11.11.8-ce.0

# 停止旧版本容器
docker stop gitlab

# 删除旧版本容器
docker rm gitlab

# 生成新版本容器后,访问网站,查看版本

Gitlab汉化

Gitlab在12.2.x之前的版本可访问https://hub.docker.com/r/blueapple/gitlab-ce-zh获取相应的版本

在12.2.x后的新版本都可以采用直接替的方式进行汉化,中文社区最新汉化版本为12.3.5

docker exec -it gitlab /bin/bash

# 查看版本,此处拿12.3.5为范例
root@gitlab:/# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.3.5

# 停止服务
root@gitlab:/# gitlab-ctl stop

# 下载汉化包并解压
root@gitlab:/# wget https://gitlab.com/xhang/gitlab/-/archive/v12.3.5-zh/gitlab-v12.3.5-zh.tar.gz
root@gitlab:/# tar -zxf gitlab-v12.3.5-zh.tar.gz

# 备份并覆盖原文件
root@gitlab:/# cp -fr /opt/gitlab/embedded/service/gitlab-rails{,gao-`date +%Y%m%d`}
root@gitlab:/# cp -rf ./gitlab-v12.3.5-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘./log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘./tmp’

# 重启
root@gitlab:/# gitlab-ctl reconfigure    
root@gitlab:/# gitlab-ctl restart

Gitlab报错

Error 1:迁移数据后,网站保存配置时返回500错误

查看日志 /opt/gitlab/gitlab/logs/gitlab-rails/production.log 发现错误信息为OpenSSL::Cipher::CipherError

导致错误原因:因为迁移数据后,没有将原来的 gitlab-secrets.json (内含加密信息)迁移过来导致

解决方法:将原来的gitlab-secrets.json迁移过来,或进入rails控制台(gitlab-rails console)输入 ApplicationSetting.current.reset_runners_registration_token! 重置

Error 2:删除项目,网站返回500错误

查看日志 /opt/gitlab/gitlab/logs/gitlab-rails/production.log 发现错误信息为OpenSSL::Cipher::CipherError

解决方法:进入db控制台(gitlab-rails dbconsole)输入UPDATE projects SET runners_token = null, runners_token_encrypted = null;重置token

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值