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及更高版本中得到了修复。

相关推荐
功德+n1 天前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭1 天前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿1 天前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher1 天前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家1 天前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR1 天前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆1 天前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104661 天前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999991 天前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊1 天前
Docker 入门之网络基础
网络·docker·php