将 docker 部署的 gitlab 从 14.1.0 升级到 15.0.0(解决14.10.0升级报错)

服务器原有使用 docker 部署的 gitlab,
需要将其从版本 14.1.0 升级到 15.0.0,
升级过程中还需要解决升级14.10.0版本的报错问题。

# 原 yml 文件
# docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno
# https://docs.docker.com/compose/compose-file/compose-versioning/
# https://github.com/compose-spec/compose-spec/blob/master/spec.md
# Compose file format 3.8, Docker Engine release 19.03.0+
version: "3.8"
services:

  gitlab:
    image: gitlab/gitlab-ce:14.1.0-ce.0
    networks:
      - default
    volumes:
      - "/data/config/Shanghai:/etc/localtime"
      - "/data/gitlab/config:/etc/gitlab"
      - "/data/gitlab/data:/var/opt/gitlab"
      - "/data/gitlab/logs:/var/log/gitlab"
    deploy:
      labels:
        host: your-swarm-host
      replicas: 1
      restart_policy:
        condition: on-failure

networks:
  default:
    external: true
    name: your-swarm-net
# 备份 gitlab 配置文件
cd /data/gitlab
tar -czvf gitlab-config-20220524.tar.gz config
# 备份 gitlab 数据
DOCKER_ID=`docker ps | grep gitlab | awk '{print $1}'`
docker exec -it ${DOCKER_ID} gitlab-rake gitlab:backup:create

# 升级 14.1.0 > latest
# 获取最新镜像 gitlab/gitlab-ce:latest
sed -i 's/14.1.0-ce.0/latest/g' /data/gitlab/gitlab.yml
docker pull gitlab/gitlab-ce:latest
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno
docker service logs -f arno_gitlab
docker service ls
# 升级完成后为 4.6.1 的版本
# 再按照如下顺序逐步升级
# 过程中可能需要重新启动 nginx 容器

# 再升级为 14.8.0
sed -i 's/latest/14.8.0-ce.0/g' /data/gitlab/gitlab.yml
docker pull gitlab/gitlab-ce:14.8.0-ce.0
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno

# 再升级为 14.9.0
sed -i 's/14.8.0/14.9.0/g' /data/gitlab/gitlab.yml
docker pull gitlab/gitlab-ce:14.9.0-ce.0
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno

# 再升级为 14.9.4
sed -i 's/14.9.0/14.9.4/g' /data/gitlab/gitlab.yml
docker pull gitlab/gitlab-ce:14.9.4-ce.0
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno

直接升级会报错:

Running handlers:
There was an error running gitlab-ctl reconfigure:
rails_migration[gitlab-rails] (gitlab::database_migrations line 51) had an error: Mixlib::ShellOut::ShellCommandFailed: bash[migrate gitlab-rails database]
(/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16)
had an error: Mixlib::ShellOut::ShellCommandFailed: Command execution failed. STDOUT/STDERR suppressed for sensitive resource Running handlers complete Chef Infra Client failed. 161 resources updated in 01 minutes 44 seconds

参考如下文章:

# 再升级为 14.10.0
docker service rm arno_gitlab
# 修改 /data/gitlab/config/gitlab.rb
# 在 # gitlab_rails['auto_migrate'] = true 下面增加: gitlab_rails['auto_migrate'] = false
# 增加一个空文件 /data/gitlab/config/skip-auto-reconfigure
sed -i 's/14.9.4/14.10.0/g' /data/gitlab/gitlab.yml
docker pull gitlab/gitlab-ce:14.10.0-ce.0
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno
# 等待 3分钟左右待gitlab容器启动
docker service ls
DOCKER_ID=`docker ps | grep gitlab | awk '{print $1}'`
docker exec -it ${DOCKER_ID} /bin/bash
# 手动升级
gitlab-rake db:migrate
gitlab-rake gitlab:background_migrations:finalize[ProjectNamespaces::BackfillProjectNamespaces,projects,id,'[null\,"up"]']
gitlab-rake db:migrate
gitlab-rake db:migrate:status
# 出行 gitlab Reconfigured! 提示
# 确认所有升级项全部是 up 状态后
gitlab-ctl reconfigure
# 退出容器
docker service rm arno_gitlab
# 修改 /data/gitlab/config/gitlab.rb
# 去掉 gitlab_rails['auto_migrate'] = false
# 删除 空文件 /data/gitlab/config/skip-auto-reconfigure
# 便于后续自动升级
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno

# 再升级为 15.0.0
sed -i 's/14.10.0/15.0.0/g' /data/gitlab/gitlab.yml
docker pull gitlab/gitlab-ce:15.0.0-ce.0
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno

# 再升级为 15.0.0
sed -i 's/14.10.0/15.0.0/g' /data/gitlab/gitlab.yml
docker pull gitlab/gitlab-ce:15.0.0-ce.0
docker stack deploy --with-registry-auth -c /data/gitlab/gitlab.yml arno

# 删除多余的docker gitlab镜像文件
docker rmi bb81563932ce b6d52c0ee5cf 6de118597222 50a2f66dea2b 47e6c191a128 467b0e5b3fe1 46cd6954564a

 欢迎访问我的博客 原文 将 docker 部署的 gitlab 从 14.1.0 升级到 15.0.0(解决14.10.0升级报错) - 天天成长

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值