Docker 容器部署的Gitlab 实例版本更新
前情提要
打算将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 版本更新与数据迁移
可以参考上方文档操作,但是实际操作是下面这个,效果好像差不多。
- docker 停止Gitlab
docker stop gitlab-ce
- 修改
external_gitlab.rb
文件- 增加
postgresql['version'] = 16;
由于当前版本默认的postgres 版本不是16,因此需要配置下 - 修改数据库的host
gitlab_rails['db_host'] = '172.19.19.2';
- 增加
- 重启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.json
和gitlab.rb
文件,需要自行备份。由于已经将以上文件使用docker 映射到宿主机,所以就不备份了。
在一个是/etc/gitlab/ssl
、/etc/gitlab/trusted-certs
两个文件夹中的ssl 相关证书和密钥也需要自行备份。
确定升级路线
使用gitlab 官方提供的工具确定升级路线。
本次我将从17.3.5 版本升级到17.10.8 版本,工具会显示到目标版本之间会需要经过哪些必要的版本和注意事项。
更新前执行检查和操作
- 前往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