Docker 容器部署的Gitlab 实例版本更新
技术 Gitlab Docker Postgres 7

前情提要

打算将Gitlab 版本更新,由17.3.5 更新到17.10.8。同时更新Postgres 数据库版本。

现状

Gitlab 部署在docker 中,版本17.3.5,连接使用外部的Nginx、Postgres 和 Redis。
Gitlab 相关docker-compose 部分内容如下:

  gitlab-ce:
    container_name: gitlab-ce
    ## use gitlab upgrade path tool to check:https://gitlab-com.gitlab.io/support/toolbox/upgrade-path
    image: gitlab/gitlab-ce:17.3.5-ce.0
    restart: unless-stopped
    ports:
      - 9922:22
    networks:
      network-infrastructure:
        ipv4_address: 172.18.22.2
        aliases:
          - infrastructure-gitlab
      network-database:
        ipv4_address: 172.19.22.2
    volumes:
      - ./Gitlab/config:/etc/gitlab/
      - ./Gitlab/data:/var/opt/gitlab/
      - ./Gitlab/log:/var/log/gitlab/
      - ./Gitlab/external_gitlab.rb:/root/external_gitlab.rb
    env_file:
      - ./env_file/TimeZone.env
      - ./env_file/GitLab.env

GitLab.env 文件内容:

# 让gitlab 引用额外的配置文件
GITLAB_OMNIBUS_CONFIG="from_file \"/root/external_gitlab.rb\""

external_gitlab.rb 文件部分内容:

postgresql['enable'] = false;
gitlab_rails['db_adapter'] = 'postgresql';
gitlab_rails['db_encoding'] = 'utf8';
gitlab_rails['db_host'] = '172.19.19.22';
gitlab_rails['db_port'] = 5432;
gitlab_rails['db_username'] = 'gitlab';
gitlab_rails['db_password'] = '******';

更新Postgres

Upgrade a non-packaged PostgreSQL database
PostgresSQL in Docker 版本更新与数据迁移

可以参考上方文档操作,但是实际操作是下面这个,效果好像差不多。

  1. docker 停止Gitlab docker stop gitlab-ce
  2. 修改 external_gitlab.rb 文件
    1. 增加postgresql['version'] = 16;由于当前版本默认的postgres 版本不是16,因此需要配置下
    2. 修改数据库的hostgitlab_rails['db_host'] = '172.19.19.2';
  3. 重启Gitlab docker start gitlab-ce

更新Gitlab 版本

参考资料

Gitlab upgrade path tool
Upgrading GitLab
Backup and restore a non-packaged PostgreSQL database

创建备份

docker exec -t gitlab-ce gitlab-backup create
另外Gitlab 创建的备份不包含gitlab-secrets.jsongitlab.rb 文件,需要自行备份。由于已经将以上文件使用docker 映射到宿主机,所以就不备份了。
在一个是/etc/gitlab/ssl/etc/gitlab/trusted-certs 两个文件夹中的ssl 相关证书和密钥也需要自行备份。

参考文档:
Back up GitLab | GitLab Docs

确定升级路线

使用gitlab 官方提供的工具确定升级路线。
本次我将从17.3.5 版本升级到17.10.8 版本,工具会显示到目标版本之间会需要经过哪些必要的版本和注意事项。

Upgrade Path

更新前执行检查和操作

  • 前往Gitlab Web 页面,Admin -> Monitoring > Background migrations 查询是否有未完成的迁移任务。
  • 其他更新前的检查参考 Upgrading GitLab | GitLab Docs
  • 暂停CI/CD 任务

更新Gitlab 实例

  • 根据升级路线图,先把镜像下载下来
docker pull gitlab/gitlab-ce:17.3.7-ce.0 
docker pull gitlab/gitlab-ce:17.5.5-ce.0 
docker pull gitlab/gitlab-ce:17.8.7-ce.0 
docker pull gitlab/gitlab-ce:17.10.8-ce.0
  • 依次修改docker-compose.yaml 文件中的gitlab 镜像版本后执行docker compose up -d 启动gitlab实例
  • 每次启动后都再次执行一下更新前的检查和操作

更新Gitlab-runner

将部署在docker 中的gitlab-runner 版本更新至与Gitlab 实例相同的大版本 v17.10.2

Docker 容器部署的Gitlab 实例版本更新
https://halo.persipa.site/2025/rJb9WCDL
作者
Persipa
发布于
更新于
许可