前言
上周去參與“中國數字經濟創新發展大會”了,然后又忙新項目的事情,博客又有一段時間沒有更新,今天周一事情比較少,立刻開始寫文,最近有挺多值得記錄的東西~
進入正文,最近我們搭了個Gitlab,并且把正在開發的項目代碼都遷移到自建的Gitlab上,整個過程還是比較流暢的(就是有點費內存
PS:立即下單給這臺服務器買了四條16G內存組四通道~
在此之前,我們團隊一直使用Gitee企業版作為代碼管理,不過隨著網絡安全和信息安全管控越來越嚴格,加之五月份新政策加緊了對國內開源項目的管控,我們還是決定將代碼放到一個更加可控的平臺上比較好。
在對比了Gitea和Gitlab之后,決定使用Gitlab搭建我們團隊自己的代碼管理系統。
開始
Gitlab有開源免費的社區版,功能夠用,如果后續需要用更多功能還可以換企業版
所以為了方便后續升級,我們選擇使用企業版鏡像,未激活的情況下與社區版無異,需要升級的話只要購買它的訂閱即可平滑升級到企業版。
關于部署方式,云原生時代當然使用Docker~
老規矩,用我最喜歡的compose編排鏡像
找一個空間足夠大的盤,創建gitlab目錄,然后創建docker-compose.yml
文件
配置內容如下
version:?"3"
services:gitlab:image:?gitlab/gitlab-ee:latestrestart:?alwayshostname:?gitlabports:-?1100:80-?1101:443-?1102:22volumes:-?/etc/localtime:/etc/localtime-?./config:/etc/gitlab-?./logs:/var/log/gitlab-?./data:/var/opt/gitlab
具體端口映射規則可以自己定義,volume映射也可以改,但記得第一個/etc/localtime
是固定的,把本機的時間傳給gitlab鏡像。
保存完在目錄下執行docker-compose up
就能跑起來了
首次登錄
Gitlab默認管理員用戶是root
密碼在/etc/gitlab/initial_root_password
文件里
可以進入容器內部查看
優化內存使用
Gitlab吃內存真是名不虛傳啊
我們使用的這個服務器是32G內存,在默認配置下一直吃滿內存,甚至在使用過程中經常出現各種5xx錯誤,然后一看剩余內存就幾百M……
果然是內存老虎啊~
然后就嘗試各種配置,經過幾天的摸索,終于把內存占用控制在16G左右
修改配置文件,在Gitlab容器中,這個文件的位置是/etc/gitlab/gitlab.rb
前面我們在docker compose中做了映射,也可以在本機目錄下修改./config/gitlab.rb
文件
puma['worker_timeout']?=?30
gitlab_rails['time_zone']?=?'Asia/Shanghai'
puma['worker_processes']?=?2
postgresql['shared_buffers']?=?"256MB"
sidekiq['max_concurrency']?=?8
postgresql['max_worker_processes']?=?4
puma['per_worker_max_memory_mb']?=?600
prometheus_monitoring['enable']?=?false
sidekiq['min_concurrency']?=?8
修改完要進入容器里執行以下命令之一(重新載入配置或重啟gitlab),才能使修改生效
gitlab-ctl?reconfigure
gitlab-ctl?restart
clone地址
剛運行起來,clone地址是這樣的,這不行啊,復制下來沒法直接clone到本地,需要配置一下

HTTP的域名配置比較簡單,進入menu->admin->settings->general->Visibility and access controls->Custom Git clone URL for HTTP(S)
填入gitlab的網址和端口號并點擊保存即可生效
不過HTTP需要登錄太麻煩了,我們一般用SSH
SSH地址好像沒法在前臺配置,需要修改配置文件
依然是前面說的那個配置文件,修改這倆行,分別配置IP地址和端口
gitlab_rails['gitlab_ssh_host']?=?'ssh.域名或IP地址'
gitlab_rails['gitlab_shell_ssh_port']?=?1102
重新載入配置就行了~
external_url配置
這個地址的配置涉及到好幾個地方,比如發送的郵件里的跳轉鏈接,代碼片段編輯的跳轉鏈接等~
還是在配置文件里修改
找到這一行,# external_url 'GENERATED_EXTERNAL_URL'
去掉前面的#
注釋,把URL改成Gitlab的內網地址http://ip:1100
(之前把1100映射到了80端口)
需要注意一點就是Gitlab會根據這里URL的端口來決定提供web服務的端口
所以設置了這個URL的話,要同步修改docker-compose.yml
里的端口映射配置
比如這里設置了1100,那么同步docker-compose.yml
修改為
ports:-?1100:1100
搞定~
參考資料
GitLab部署筆記(Docker):https://www.hash070.top/archives/gitlab-withdocker.html
GitLab最新版限制內存大小puma命令:https://blog.csdn.net/m0_46542378/article/details/125344764
GitLab修改端口和修改發郵件跳轉地址的前綴:https://www.52jingya.com/aid4087