docker gitlab升級到14.4.2


一、概述

目前gitlab版本是13.3.5,使用docker部署。近期阿里雲發出警告,有惡意代碼執行,今查詢,是gitlab漏洞導致,需要升級到最新版本。

目前已知的最新版本是14.4.2

 

二、升級策略

參考官方文檔:https://docs.gitlab.com/ee/update/#installation-using-docker

13版本升級路徑為:13.0.14-> 13.1.11-> 13.8.8-> 13.12.15->最新14.0.Z->最新14.1.Z->最新14.Y.Z

由於我的版本為13.3.5,因此升級路徑為: 13.8.8-> 13.12.15->最新14.0.Z->最新14.1.Z->最新14.Y.Z

dockerhub官方鏈接: https://registry.hub.docker.com/r/gitlab/gitlab-ce

先下載所需要的鏡像

docker pull gitlab/gitlab-ce:13.8.8-ce.0
docker pull gitlab/gitlab-ce:13.12.15-ce.0
docker pull gitlab/gitlab-ce:14.0.12-ce.0
docker pull gitlab/gitlab-ce:14.1.8-ce.0
docker pull gitlab/gitlab-ce:14.2.6-ce.0
docker pull gitlab/gitlab-ce:14.3.4-ce.0
docker pull gitlab/gitlab-ce:14.4.2-ce.0

 

三、備份

當前的docker啟動命令為:

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:13.3.5-ce.0

 

先停止gitlab,再拷貝目錄

docker stop gitlab-ce
cp -rp /data/gitlab /data/gitlab.bak

 

三、正式升級

升級到13.8.8

先刪除gitlab,再啟動,注意,使用鏡像版本為13.8.8

docker stop gitlab-ce

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:13.8.8-ce.0

 

查看gitlab docker日志

docker logs -f gitlab-ce

等待10分鍾左右,當出現

...
==> /var/log/gitlab/nginx/gitlab_access.log <==
127.0.0.1 - - [21/Nov/2021:06:03:15 +0000] "GET /help HTTP/1.1" 200 68265 "" "curl/7.74.0-DEV" -
...

表示gitlab已經完全啟動好了

 

登錄gitlab,點擊幫助,查看gitlab版本

 

升級到13.12.15

注意:必須先修改配置文件,否則啟動時,會報錯,提示沒有配置完整的域名。
修改/data/gitlab/config/gitlab.rb文件,內容如下:

external_url = 'gitlab.aliyun.com'

注意:這里有一個等號,老版本是沒有等號的。

 

先刪除gitlab,再啟動,注意,使用鏡像版本為13.12.15

docker stop gitlab-ce

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:13.12.15-ce.0

 

接下來就是查看日志,等待10分鍾,步驟同上!

查看gitlab版本

 

升級到14.0.12

注意:需要先修改配置文件,否則直接啟動會報錯:

* unicorn['worker_processes'] has been deprecated since 13.10 and was removed in 14.0. Starting with GitLab 14.0, Unicorn is no longer supported and users must switch to Puma, following https://docs.gitlab.com/ee/administration/operations/puma.html.

 

修改/data/gitlab/config/gitlab.rb文件,將這行注釋掉

unicorn['worker_processes'] = 2

新增2行配置

puma['worker_timeout'] = 60
puma['worker_processes'] = 2

 

先刪除gitlab,再啟動,注意,使用鏡像版本為14.0.12-ce.0

docker stop gitlab-ce

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:14.0.12-ce.0

 

等待10分鍾,查看版本

 

升級到14.1.8

注意:14版本不能一步到位,必須要14.0.x-->14.1.x-->14.2.x-->14.3.x,以此類推,否則會導致數據遷移失敗。

 

先刪除gitlab,再啟動,注意,使用鏡像版本為14.1.8

docker stop gitlab-ce

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:14.1.8-ce.0

 

等待10分鍾,查看版本

 

升級到14.2.6

注意:升級到14.2.x,需要執行2個命令:

先進入gitlab容器

docker exec -it gitlab-ce /bin/bash

執行以下命令:

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,push_event_payloads,event_id,'[["event_id"]\, ["event_id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_stages,id,'[["id"]\, ["id_convert_to_bigint"]]']

 

先刪除gitlab,再啟動,注意,使用鏡像版本為14.2.6

docker stop gitlab-ce

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:14.2.6-ce.0

 

等待10分鍾,查看版本

 

升級到14.3.4

先刪除gitlab,再啟動,注意,使用鏡像版本為14.3.4

docker stop gitlab-ce

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:14.3.4-ce.0

 

等待10分鍾,查看版本

 

升級到14.4.2

先刪除gitlab,再啟動,注意,使用鏡像版本為14.4.2

docker stop gitlab-ce

docker run -d \
 --restart=always \
 --name=gitlab-ce \
 -p 8443:443 \
 -p 8090:80 \
 -p 8022:22 \
 -v /data/gitlab/config:/etc/gitlab \
 -v /data/gitlab/logs:/var/log/gitlab \
 -v /data/gitlab/data:/var/opt/gitlab \
 -v /data/gitlab/ssl:/etc/gitlab/ssl \
 gitlab/gitlab-ce:14.4.2-ce.0

 

等待10分鍾,查看版本

 

四、修改項目clone地址

進入docker里面,修改文件

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

修改Host字段

production: &base
  #
  # 1. GitLab app settings
  # ==========================

  ## GitLab settings
  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: aliyun.baidu.com

重啟gitlab

gitlab-ctl restart

 

刷新頁面,再次查看項目clone地址,就正確了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM