Docker部署的gitlab升级指南(15.11.X容器里升级PostgreSQL到13.8)

一、确定当前版本
复制代码
#进入当前版本容器产看gitlab版本
docker exec -it gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

#显示版本如下
14.4.0
二、备份数据,防止升级发生意外
复制代码
#执行备份命令
docker exec -ti gitlab gitlab-rake gitlab:backup:create

#在持久化目录查看备份情况
ll /opt/gitlab/data/backups/
-rw-------  1  998 docker 342722560  6月  5 02:18 1654366714_2022_06_04_14.4.0_gitlab_backup.tar
-rw-------  1  998 docker 559196160  6月 11 22:40 1654958434_2022_06_11_14.4.0_gitlab_backup.tar
三、确定升级路线

docker环境部署gitlab的升级很简单,直接基于高版本的镜像运行容器即可;

需要注意的是gitlab的升级不能跨大版本升级,详见升级路径:

https://docs.gitlab.com/ee/update/index.html#upgrade-paths

可在此链接查看gitlab-ce的docker全部镜像:

https://hub.docker.com/r/gitlab/gitlab-ce/

升级路线图如下;

从14.4.0版本升级到16.Y.Z版本升级路线图为

14.4.0->14.6.2->14.9.5-> 14.10.4->15.0.2->15.1.0->15.4.0->15.6.1->15.8.0->15.9.0->15.11.0->16.0.1->16.0.8->16.1.5->16.3.6->16.7.3->16.Y.Z->

四、升级(共分4个版本升级)

1.14.4.0->14.6.2

复制代码
#为了防止升级过程ssh终端造成问题,启用终端复用器tmux, 执行升级操作
#停止gitllab服务
docker stop gitlab && docker  rm gitlab

#执行升级命令
docker run -d --restart=always -p 9980:9980 -p 10022:22 --name gitlab_15_9 --env GITLAB_OMNIBUS_CONFIG="external_url 'http://IP:9980/'; gitlab_rails['lfs_enabled'] = true;" -v /home/gitlab/config:/etc/gitlab  -v /home/gitlab/logs:/var/log/gitlab  -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:14.6.2-ce.0

#查看升级日志,约10分钟左右升级成功
docker logs -f gitlab

2.14.6.2->14.9.5

复制代码
#停止gitllab服务
docker stop gitlab && docker  rm gitlab

#执行升级命令
docker run -d --restart=always -p 9980:9980 -p 10022:22 --name gitlab_15_9 --env GITLAB_OMNIBUS_CONFIG="external_url 'http://IP:9980/'; gitlab_rails['lfs_enabled'] = true;" -v /home/gitlab/config:/etc/gitlab  -v /home/gitlab/logs:/var/log/gitlab  -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:14.9.5-ce.0

#查看升级日志,约10分钟左右升级成功
docker logs -f gitlab
从 GitLab 16开始就不支持 PostgreSQL 12。在升级到 GitLab 16.0或更高版本之前,至少将 PostgreSQL 升级到13.6版本。

要将Docker中的GitLab 15.11.0升级到16.0.1,并将容器内的PostgreSQL升级到13.6版本,请按照以下步骤操作:

升级到15.11.0版本后

复制代码
docker exec -it <容器> /bin/bash

查看PostgreSQL版本

复制代码
/opt/gitlab/embedded/bin/postgres --version

升级到PostgreSQL13.0以上

复制代码
gitlab-ctl pg-upgrade -V 13

若提示报错: /var/opt/gitlab/postgresql/data.13 is not empty. Move or delete this directory to proceed with upgrade

复制代码
把data.13删除即可:rm -rf /var/opt/gitlab/postgresql/data.13

在执行:gitlab-ctl pg-upgrade -V 13

15.11.0>16.0.1

复制代码
docker run -d --restart=always -p 9980:9980 -p 10022:22 --name gitlab_16_0 --env GITLAB_OMNIBUS_CONFIG="external_url 'http://IP:9980/'; gitlab_rails['lfs_enabled'] = true;" -v /home/gitlab/config:/etc/gitlab  -v /home/gitlab/logs:/var/log/gitlab  -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:16.0.1-ce.0

大多数安装可以跳过16.0、16.1和16.2,因为升级路径上的第一个必需停止点是16.3。在所有情况下,您都应该查看这些中间版本的说明。一些 GitLab 安装必须停止在这些中间版本,这取决于所使用的特性和环境的大小: 16.0.8: 用户表中有大量记录的实例。有关更多信息,请参见长时间运行的用户类型数据更改。16.1.5: 使用 NPM 包注册表的实例。16.2.8: 具有大量管道变量(包括历史管道)的实例。如果您的实例受到影响,并且您跳过了这些停止: 升级可能需要几个小时才能完成。该实例生成500个错误,直到所有数据库更改完成,然后 Puma 和 Sidekiq 必须重新启动。对于 Linux 包安装,会出现超时,并且需要手动解决方案来完成迁移。GitLab 16.0引入了围绕对项目规模实施限制的变化。在自我管理的情况下,如果使用这些限制,达到限制的项目在推送到同一组中未受影响的 Git 存储库时会导致错误消息。这些错误通常指的是超过零字节的限制(限制为0 B)。推送成功了,但错误暗示了其他情况,并可能导致自动化问题。阅读本期更多内容。这个 bug 在 GitLab 16.5及更高版本中得到了修复。

相关推荐
羑悻的小杀马特1 小时前
轻量跨云·掌控无界:Portainer CE + cpolar 让远程容器运维像点外卖一样简单——免复杂配置,安全直达对应集群
运维·网络·安全·docker·cpolar
询问QQ:276998853 小时前
基于手肘法的kmeans聚类数在Matlab中的精确识别:风电与光伏功率分析
gitlab
EAIReport6 小时前
企业级报表自动化:基于Docker的部署实践
运维·docker·自动化
tianyuanwo8 小时前
多平台容器化RPM构建流水线全指南:Fedora、CentOS与Anolis OS
linux·运维·容器·centos·rpm
敲上瘾11 小时前
【探索实战】:Kurator分布式统一应用分发平台的全面解析与实践指南
分布式·容器·kubernetes·serverless
cui_win11 小时前
Docker Compose 部署一个完整的Prometheus监控告警系统
docker·容器·prometheus
ALex_zry15 小时前
Docker Compose运维技术实战分享:从安装到架构解析
运维·docker·架构
roman_日积跬步-终至千里20 小时前
【Docker】Docker Stop 后到底发生了什么?——从信号机制到优雅停机
运维·docker·容器
z***62621 小时前
Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像
docker·容器·tomcat
Connie14511 天前
记一次K8s故障告警排查(Grafna告警排查)
云原生·容器·kubernetes·grafana