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

相关推荐
花落已飘6 分钟前
openEuler WSL2容器化开发实战:Docker Desktop集成与应用部署
运维·docker·容器
高旭博5 小时前
7. kubernetes资源——service服务
云原生·容器·kubernetes
斯普信专业组6 小时前
Docker 常用命令与时区配置指南
docker·容器·eureka
天一生水water17 小时前
ubuntu使用毫秒镜像方式安装docker mysql
ubuntu·阿里云·docker
Qayrup20 小时前
docker 搭建私有仓库,推送并拉取
运维·docker·容器
郭庆汝20 小时前
docker拉取英伟达官方cuda11.8镜像
docker·cuda11.8
天下不喵21 小时前
Ubuntu24.04安装Docker过程记录
docker
黑黍1 天前
如何在k8s中配置并使用nvidia显卡
云原生·容器·kubernetes
冷血~多好1 天前
使用docker部署elk,实现日志追踪
elk·docker·容器