备份数据

# 执行备份命令
docker exec -ti gitlab gitlab-rake gitlab:backup:create
# 看到以下内容则备份成功
2022-10-18 02:49:07 +0000 -- Backup 1666061343_2022_10_18_15.4.2 is done.
# 可以在备份文件夹内看到备份的内容
root@devtool:/data/gitlab/data/backups# ls
1666061343_2022_10_18_15.4.2_gitlab_backup.tar

升级顺序

进入容器查看gitlab的当前版本,我的当前版本为 14.6.2

docker exec -it gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
14.6.2

Gitlab不能跨大版本升级,需要按照大版本顺序来升级
升级顺序的获取有两个方法:

1.官方网站的升级路径

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

c3e787d5dcb1c3b9b84d70afacf0560b.png
确认升级顺序为:14.6.2 -> 14.9.5 -> 14.10.Z -> 15.0.Z -> 15.4.0 -> latest 15.Y.Z

2.新版本提示的路径
直接部署最新的版本,若无法直接升级,将会在日志中提示需要升级的版本,目前最新版本为15.4.2,顺序如下

部署 15.4.2 提示需要最新的 15.0.X
部署 15.0.4 提示需要最新的 14.10.X
部署 14.10.3 成功,之后依次部署 15.0.4、15.4.2

可以看到官方网站的升级循序需要升级5次,而根据部署时提示只需要升级三次,不知道为什么会有这样的差异,我这里按照提示升级三次成功,目前为止使用正常

如何升级

停止并移除Gitlab容器,按照顺序部署新版本,名称、存储卷、端口等保持和原先一致即可
15.4.2 -> 14.10.3

# 停止并移除容器
docker stop gitlab && docker  rm gitlab
# 执行升级命令
docker run -d  \
        -p 443:443 -p 80:80 -p 22:22 \
        --name gitlab --restart always \
        -v /data/gitlab/logs:/var/log/gitlab \
        -v /data/gitlab/data:/var/opt/gitlab \
        -v /data/gitlab/config:/etc/gitlab \
        gitlab/gitlab-ce:14.10.3-ce.0

14.10.3 -> 15.0.4

# 停止并移除容器
docker stop gitlab && docker  rm gitlab
# 执行升级命令
docker run -d  \
        -p 443:443 -p 80:80 -p 22:22 \
        --name gitlab --restart always \
        -v /data/gitlab/logs:/var/log/gitlab \
        -v /data/gitlab/data:/var/opt/gitlab \
        -v /data/gitlab/config:/etc/gitlab \
        	gitlab/gitlab-ce:15.0.4-ce.0

15.0.4 -> 15.4.2

# 停止并移除容器
docker stop gitlab && docker  rm gitlab
# 执行升级命令
docker run -d  \
        -p 443:443 -p 80:80 -p 22:22 \
        --name gitlab --restart always \
        -v /data/gitlab/logs:/var/log/gitlab \
        -v /data/gitlab/data:/var/opt/gitlab \
        -v /data/gitlab/config:/etc/gitlab \
        	gitlab/gitlab-ce:15.4.2-ce.0