docker 迁移 gitlab 代码服务容器

背景说明

服役良久的 gitlab 服务容器,需迁移到新机器,环境如下:

类别版本
docker20.10.6
gitlab14.0.12
# 容器启动命令,挂载主机 /data/gitlab 目录
docker run -itd \
    --hostname {宿主机 IP} \
    --name gitlab \
    --restart always \
    --volume /data/gitlab/config:/etc/gitlab \
    --volume /data/gitlab/logs:/var/log/gitlab \
    --volume /data/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:14.0.12-ce.0

失败方案

我首先想到的做法,是把数据目录(/data/gitlab)拷贝到新机器,然后启动新容器,结果报错:

STDERR: Rails Error: Unable to access log file. Please ensure that /opt/gitlab/embedded/service/gitlab-rails/log/production.log exists and is writable.

猜测是因为数据命令中,存在旧容器的读写依赖,不兼容新容器。

基于 gitlab 自带功能迁移

碰壁后,想起 gitlab 是自带备份/恢复功能的,查阅文档后,按照以下步骤顺利完成迁移🎉

  1. 在旧容器中进行数据数据备份
docker exec -it gitlab /bin/bash
# 进入容器,执行备份
gitlab-rake gitlab:backup:create

耐心等待备份完成,压缩包保存到数据目录的backups文件夹下。

2. 创建新容器(命令可照抄)
3. 将备份文件拷贝到同目录
4. 进入新容器,执行恢复命令

# 新容器内执行
# 先给备份文件授权,避免出现解压时权限不足的情况
chmod 777 -R /var/opt/gitlab/backups
# 关闭服务,使用gitlab-ctl 命令停止 unicorn(或者puma) 以及 sidekiq 服务
gitlabl-ctl stop puma
gitlabl-ctl stop sidekiq

# 启动恢复,如果备份目录下仅有一个文件,默认就是用该文件
gitlab-rake gitlab:backup:restore



OK!

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

集成显卡

码字不易,需要您的鼓励😄

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值