Gitlabs版本升级大版本不能直接跳级升级, 可以参考官方的升级路径
本人是从13.9.x需要升级到最新的15.3.x。 参考官方路径结合自己的实际情况成功升级。

13.9.0 -> 13.12.15 -> 14.0.12 ->14.1.8 -> 14.3.6 ->14.6.2 -> 14.9.5 ->14.10.5 ->15.0.3 -> 15.3.1

因为是基于Docker部署gitlabs,所以首先要在主机上创建挂载点,把gitlabs的数据挂载到主机上。

docker volume create gitlab_config
docker volume create gitlab_logs
docker volume create gitlab_data
sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:13.9.0-ce.0

接下来就是一步步的安装版本升级的路径是新创建docker 容器了。

sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_13.12.15 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:13.12.15-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_14.0.12 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:14.0.12-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_14.1.8 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:14.1.8-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_14.3.6 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:14.3.6-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_14.6.2 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:14.6.2-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_14.9.5 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:14.9.5-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_14.10.5 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:14.10.5-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_15.0.3 \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce:15.0.3-ce.0 sudo docker run --detach \
--hostname bp.devops.gitlab \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab_latest \
--restart always \
--privileged=true \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
gitlab/gitlab-ce

在升级过程中如果碰到报错: Database migration fails, 可以手动执行数据 Database migration。

docker exec -it {dockerID} /bin/bash
gitlab-rake gitlab:background_migrations:finalize[ProjectNamespaces::BackfillProjectNamespaces,projects,id,'[null\,"up"]']
gitlab-rake gitlab:background_migrations:finalize[BackfillProjectSettings,projects,id,'[]']
gitlab-rake gitlab:background_migrations:finalize[BackfillIntegrationsTypeNew,integrations,id,'[]']
gitlab-rake db:migrate --trace
gitlab-rake db:migrate:status | grep 'down'
gitlab-ctl reconfigure
apt dist-upgrade
gitlab-ctl restart

以上手动执行还是失败,可以退回上一个版本,登录gitlabs的Admin Area - Background Migrations看看是否存在failed的,执行成功后,再升级即可。

gitlab 默认启用 Prometheus , 防止Gitlabs占用大量空间,可以关闭

docker exec -it {dockerID} /bin/bash
vim gitlab/config/gitlab.rb 直接修改
# prometheus['enable'] = true
prometheus['enable'] = false

gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl start
 

参考:

https://gitlab.com/gitlab-org/gitlab/-/issues/363230
https://gitlab.com/gitlab-org/gitlab/-/issues/360377

Docker 部署GitLabs 版本升级 13.9.x -> 15.3.x的更多相关文章

  1. 我使用 Docker 部署 Celery 遇到的问题

    问题1 - Sending due task 本机测试时没有问题的,但是在线上 docker 中,任务一直显示 "Sending due task".超时的任务是 Django O ...

  2. 如何使用Docker部署一个Go Web应用程序

    熟悉Docker如何提升你在构建.测试并部署Go Web应用程序的方式,并且理解如何使用Semaphore来持续部署. 简介 大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版 ...

  3. Docker部署微服务

    部署时需要注!意!: 打开防火墙对应的应用端口!!用于外部访问!!内部互访问则不需要. 和对应数据库,缓存,消息中间件服务等的端口(当然这些服务必须先开启,它们也可使用docker部署开启) ,用于容 ...

  4. AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署

    一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...

  5. docker初体验:Docker部署SpringCloud项目eureka-server

    Docker部署SpringCloud项目eureka-server 1 创建eureka-server工程 创建父工程cloud-demo,其pom.xml如下: <?xml version= ...

  6. docker部署tensorflow serving以及模型替换

    Using TensorFlow Serving with Docker 1.Ubuntu16.04下安装docker ce 1-1:卸载旧版本的docker sudo apt-get remove ...

  7. 使用 Docker 部署 Spring Boot 项目,带劲!!

    上一篇:年轻人的第一个 Docker 应用 Docker 一次构建.处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的点击这里阅读 Docker 基础教程 ...

  8. Tars | Win10下Docker部署TarsJava(SpringBoot)全过程及踩坑记录

    @ 目录 前言 1. 相关环境版本: 坑点一:VMware与Win10 Docker冲突 坑点二:20.版本TarsJava(SpringBoot)依赖文件缺失 2. Docker安装: 坑点三:Do ...

  9. Docker部署lnmp 实战 (多注意配置文件,不管访问试试换个浏览器)

    Docker部署LNMP环境 关闭防火墙,设置自定义网络 systemctl stop firewalld systemctl disable firewalld setenforce 0 docke ...

  10. 使用 Docker 部署 LNMP 并搭建 wordpress

    准备 系统版本:CentOS Linux release 7.4.1708 (Core)   内核版本:3.10.0-693.el7.x86_64    IP:192.168.31.43    可访问 ...

随机推荐

  1. 使用s3fs-fuse挂载minio文件时无法删除问题排查过程

    使用s3fs-fuse挂载minio文件时无法删除问题排查过程 结论:部分场景无法满足,具体问题详见正文 1. 部署minio docker run    -p 9000:9100    -p 909 ...

  2. 如何控制Tomcat的catalina.out的大小

    catalina.out文件,数据主要来源为:System.out 和 System.err 在控制台上直接输出的信息. 编码时应避免使用System.out.println()和e.printSta ...

  3. mysql删除表中重复记录

    1.创建测试表,并插入数据 create table test( id int(11) primary key auto_increment comment '用户编号', username varc ...

  4. PHP操作数据分页

    PHP操作数据分页 一.数据库安全 string addslashes ( string $str ) 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线.这些字符是单引号('). ...

  5. CF526F Pudding Monsters 题解

    题目链接:CF 或者 洛谷 析合树真是连续段问题的降智神器 先看下题目的一些特殊性,每行每列恰好有一个棋子.考虑特殊性,\(n \times n\) 的棋盘,那么就该判断是否有 \(n\) 个棋子,容 ...

  6. 不同网段之间实现GDB远程调试功能

    前言 在开发过程中,使用gdb远程调试时,会碰到 Linux 服务器的网段和板载设备的网段不是一样的,不能正常使用 gbd 远程调试功能. 板载设备和电脑连接路由器,属于同一个网段,如192.168. ...

  7. MySQL-面试知识点汇总

    1. DQL相关 2. DDL.DML.DCL相关 3.架构相关 3.1 MySQL的复制原理以及流程 主从复制:将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将 ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (198)-- 算法导论14.3 6题

    六.用go语言,说明如何来维护一个支持操作MIN-GAP的一些数的动态集Q,使得该操作能给出Q中两个最接近的数之间的差值.例如,Q=(1,5,9,15,18,22),则MIN-GAP返回18-15=3 ...

  9. nginx 剔除请求参数 $args 变量中任意指定参数之万金油

    剔除任意指定参数配置 只需要修改需要剔除的参数key(如:redirectUrl) #剔除$args中的redirectUrl 参数 server { listen 80; server_name w ...

  10. BUG管理系统(Mantis)迁移实战

    Mantis迁移实战 名词解释 Mantis:  开源的BUG管理平台Mantis,也做MantisBT.           同档次产品有EasyBUG,QC,BugFree,Bugzila. Xa ...