You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker环境下自托管GitLab-ce从12.10.3版本升级至14.1版本的分步升级流程咨询

Docker版GitLab-ce跨版本升级分步流程

我之前帮团队处理过好几次Docker部署的GitLab-ce跨版本升级,踩过不少坑,分享下我亲测有效的完整流程,能避开大部分升级陷阱:

一、升级前必做:全量备份(重中之重)

不管版本跨度多大,备份是底线,万一升级失败能快速回滚:

  • 进入运行中的GitLab容器执行备份命令:
    docker exec <你的容器名> gitlab-backup create
    
  • 备份完成后,把备份文件和核心配置文件拷到宿主机安全位置:
    # 拷贝备份文件(文件名格式类似1699999999_2023_11_13_16.6.0_gitlab_backup.tar)
    docker cp <你的容器名>:/var/opt/gitlab/backups/<备份文件名> ./gitlab-backups/
    # 拷贝关键配置文件,这俩丢了会导致数据无法恢复
    docker cp <你的容器名>:/etc/gitlab/gitlab.rb ./gitlab-config/
    docker cp <你的容器名>:/etc/gitlab/gitlab-secrets.json ./gitlab-config/
    
  • 停止并删除旧容器(注意别删数据卷和旧镜像,留作回滚用):
    docker stop <你的容器名>
    docker rm <你的容器名>
    

二、确定正确的升级路径(核心规则)

GitLab的升级有严格的版本依赖,绝对不能跨大版本直接跳级(比如从13.x直接升到16.x),必须遵循阶梯式升级路径:

升级节奏:当前大版本的最新补丁版 → 下一个大版本的首个稳定补丁版 → 该大版本的最新补丁版 → 重复直到目标版本
举个例子:如果当前是v13.10.3,升级路径应该是:
v13.10.3 → v13.12.15(13.x最新补丁版) → v14.0.12(14.x首个稳定补丁版) → v14.10.5(14.x最新补丁版) → v15.0.5(15.x首个稳定补丁版) → v15.11.10(15.x最新补丁版) → v16.x.x(最新稳定版)

三、逐步执行升级操作

每次只升一个版本,确认没问题再走下一步:

  1. 拉取目标版本的GitLab-ce镜像:
    docker pull gitlab/gitlab-ce:<目标版本号>
    
  2. 用原数据卷和配置启动新容器(保证数据和配置继承):
    docker run -d \
      --name gitlab-temp \
      --hostname <你的GitLab域名> \
      -p 443:443 -p 80:80 -p 22:22 \
      --restart always \
      -v /srv/gitlab/config:/etc/gitlab \
      -v /srv/gitlab/logs:/var/log/gitlab \
      -v /srv/gitlab/data:/var/opt/gitlab \
      gitlab/gitlab-ce:<目标版本号>
    
  3. 等待容器完全初始化,实时查看日志直到出现gitlab Reconfigured!提示:
    docker logs -f gitlab-temp
    
  4. 登录GitLab检查核心功能(项目访问、用户登录、CI/CD配置等),确认正常后,停止并删除当前临时容器,继续下一个版本的升级。
  5. 重复上述1-4步骤,直到升到目标最新版本。

四、常见问题与注意事项

  • 升级过程中如果遇到启动失败,优先看日志定位问题,常见原因是配置文件不兼容,可修改gitlab.rb后执行docker exec <容器名> gitlab-ctl reconfigure重新配置。
  • 确保服务器有足够磁盘空间,升级时会生成大量临时文件,磁盘不足会导致迁移失败。
  • 大版本升级耗时较长,耐心等待,不要中途中断容器运行。
  • 升级完成后,建议重新生成备份,覆盖之前的旧备份。

内容的提问来源于stack exchange,提问作者BTR Naidu

火山引擎 最新活动