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. JWT( JSON Web Token —— JSON Web 令牌 )的学习笔记

    一.跨域认证的问题 互联网服务离不开用户认证.一般流程是下面这样: 1.用户向服务器发送用户名和密码. 2.服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色.登录时间等等. ...

  2. ssh原理及使用场景

    用过linux系统的朋友,基本肯定会用过ssh.因为大部分的linux登录都是通过ssh将进行登录,除非你用的是类似windows的桌面版. 一.什么是SSH SSH 为 Secure Shell 的 ...

  3. ASCII、Unicode、UTF8 10年后,重新整理《专题1》

    以后基本都是Unicode定义二进制对应的字符,UTF8来按照一种格式来存储Unicode二进制,所以只需知道 unicode unicode 官网:https://home.unicode.org/ ...

  4. IIS的详细配置

    一:配置默认文档 输入ip打开哪个页面是由默认文档设定的 1.打开IIS配置页面,点击网站.我们的默认站点已经启动,可以看到绑定的ip和网页的路径 2.选中Default Web Site,可以看到有 ...

  5. Linux进程通信 | 管道与FIFO

    Linux进程间通信通常使用的方式有很多种,其中比较常用的包括管道(pipe)和 FIFO(命名管道).本文将介绍这两种通信方式的基本概念,并用C语言编写示例代码,来说明如何在两个进程之间使用这些IP ...

  6. Spring和Spring Boot的区别

    spring Spring 是一个开源轻量级框架,它允许 Java EE 7 开发人员构建简单.可靠和可扩展的企业应用程序.该框架主要侧重于提供各种方法来帮助您管理业务对象.与 Java 数据库连接 ...

  7. Springboot thymeleaf实战总结

    介绍 以下总结了使用Thymeleaf做项目过程中碰到的有价值的知识点.拿出来分享! 1.配置context-path 在公共模板中添加: <script type="text/jav ...

  8. Spring Boot图书管理系统项目实战-7.借阅图书

    导航: pre:  6.图书管理 next:8.续借图书 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 2.1 bookBorrow ...

  9. oracle exp/imp命令使用parfile实现参数文件调用

    优先使用数据泵(expdp/impdp)方式,更高效,问题少. 关于exp/imp工具的使用请参考我的另一篇文章: https://blog.csdn.net/IndexMan/article/det ...

  10. 摸鱼快报:golang net/http中的雕虫小技

    以后会开一个板块,摸鱼快报,快速记录这几周开发中雕虫小技. 1. 向开发环境localhost:3000种植cookie 前端使用Create React App脚手架,默认以localhost:30 ...