文章目錄
- 前言
- 一、安裝Docker
- 二、安裝GItlab
- 三、配置Gitlab
- 四、備份
- 五、Docker數據持久化
- 總結
前言
如題所述,手把手帶你搭建gitlab,目標是實現ssh鏈接clone項目,不會我隨你怎么說。
說正題,GitLab 是一個基于 Git 的全面 DevOps 平臺,涵蓋了從代碼管理、持續集成和持續交付 (CI/CD) 到項目管理和安全測試的整個軟件開發生命周期。由于可以布置到本地,GitLab 使開發團隊在開發和項目管理時更加高效,實現了快速協作和代碼管理。
一、安裝Docker
1、可以去官方下載,也可以使用Docker下載鏈接4.30。
漢化包4.29-4.30
2、一步步按官方推薦安裝并注冊賬號
3、檢查版本(以下均用Windows PowerShell(管理員)控制臺進行操作)
docker -v
4、重啟并打開,會發現報錯提升我們進入bois開啟“虛擬化”,我的是微星的主板,開機黑屏時連續按del鍵進入bios,找到OC—CPU特征—SVM Mode,也可以搜索SVM Mode后修改為允許,保存(F8)退出即可。
如果是windows server需要在Server Manager(打開【運行】窗口輸入“servermanager.msc”)中開啟虛擬化。建議自行百度。
5、2分鐘學習常用命令
影像相當于安裝包,啟動容器就相當于啟動應用
#搜索影像
docker search 關鍵字
#下載影像,鏡像位置填入上面搜索出來的地址
docker pull 影像
#創建啟動容器,等同于先執行docker create命令,再執行docker start命令
docker run
# 啟動容器
docker start 容器id
# 重啟容器
docker restart 容器id
# 停止當前正在運行的容器
docker stop 容器id
# 強制停止當前容器
docker kill 容器id
#查看容器
docker ps
#進入容器
docker exec -it 容器id
#退出容器
exit
二、安裝GItlab
1、搜索影像
docker search gitlab
2、下載影像
docker pull twang2218/gitlab-ce-zh
3、創建本地文件
cd e:
mkdir gitlab
cd gitlab
mkdir -p data/log
mkdir -p data/opt
mkdir -p data/etc
4、創建容器,其中8090:80就是端口映射,可以改成自己喜歡的(沒有占用),比如6022:22
docker run -itd -p 8443:443 -p 8090:80 -p 8022:22 --name gitlab -v $PWD/data/etc:/etc/gitlab -v $PWD/log:/var/log/gitlab -v $PWD/data/opt:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
成功后會有一串代碼打印出來
5、查看容器
docker ps
6、點擊Docker里gitlab的鏈接設置密碼、登錄(如果頁面無效也不要緊,只要Docker中gitlab是運行狀態就行,她是在啟動服務中,等幾分鐘就好了)
創建項目后發現鏈接里面包含7b646d0fde80,這是因為容器的url根據容器id變化,我們需要配置她讓其變成ip地址。
三、配置Gitlab
1、進入容器
docker exec -it gitlab bash
2、修改/etc/gitlab/gitlab.rb文件
cd /etc/gitlab
vim gitlab.rb
3、2分鐘學習vim操作
首先根據選項描述,按e進入編輯模式。
ctrl+f:向后翻頁
ctrl+b:向前翻頁
Ctrl+d: 向下翻半屏
Ctrl+u: 向上翻半屏
找到位置后,按"i",“o”,“a”,"r"任意字母進入編輯模式,左下角出現“INSERT或 REPLACE”字樣
修改完成后按esc退出編輯模式,打出英文符號冒號加字母完成操作,基本操作有:
:w 保存編輯的內容
:q 離開vi
:wq 保存后離開
:q! 不想保存修改強制離開
因為文字太多,我們使用查找功能,基本操作有:
/xxx 向下尋找一個名為xxx的字符串
?xxx 向上尋找一個名為xx的字符串
n 重復上一個查找動作
N 反向
4、查找到external_url設置的地方進行修改,請先看到第6步再進行保存退出
/external_url
如下圖,我將服務器電腦的ip填了進去(ip查找方法是在控制臺輸入ipconfig,其中的ipv4),進行:wq保存退出
5、控制臺輸入"exit"退出容器重啟
docker restart gitlab
發現項目鏈接變成了ip
6、我們項目其實更多的需要ssh,所以完整版如下
其實文件里面都是注釋,意思是找到對應地方去掉"#",我們為了方便可以全刪了或者直接將配置添加到開頭)
退出編輯模式,輸入如下字符將文件清空
:%d
external_url 'http://192.168.124.2'
gitlab_rails['gitlab_ssh_host'] = '192.168.124.2'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
#備份相關,路徑、權限、保留時間
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 5184000
7、配置生效
在容器中使用代碼
gitlab-ctl reconfigure
等待重新運行
7、控制臺輸入"exit"退出容器并重啟
docker restart gitlab
查看gitlab,發現ip、端口號完美呈現出來
我們用sourcetree克隆一下(配置SSH+Sourcetree+Git)
大功告成!
四、備份
1、進入容器
docker exec -it gitlab bash
2、創建備份
cd到前面配置文件中的地址:gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups”
cd /var/opt/gitlab/backups/
gitlab-rake gitlab:backup:create
3、查看備份,之前查看為0
ll
4、刪除Game項目
Game項目丟失
5、恢復備份
防止出錯停止寫入,如果這時候查看項目就是金典502頁面
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1716462254_2024_05_23_11.1.4
6、重新啟動
gitlab-ctl start
7、恢復成功
五、Docker數據持久化
我提到這一點是因為Docker與普通的虛擬機不同。在Docker中,當容器重啟后,容器運行過程中產生的日志或者數據庫數據都會被清空。然而,很多博客沒有提到這一點,導致用戶在遇到重啟時數據丟失,必須重新創建數據,從而感到措手不及。
在第二節安裝 GitLab 時,我在本地的 Windows 硬盤中創建了文件夾用于掛載數據。這樣即使容器重新啟動,所有數據也會保留。原本我打算專門寫一篇關于數據持久化的文章,但考慮到其實際用途不大,所以決定將這一內容融合到現有的文章中。
如果想了解更多的可以自行去官方文檔或其他博客學習。
總結
感謝您閱讀這篇文章!我致力于將技術內容講解得通俗易懂,讓每一位讀者都能輕松上手。如果您覺得這篇文章對您有所幫助,請不吝點贊支持。如果有任何疑問或建議,歡迎在評論區留言,您的反饋將幫助我不斷改進,打造更完美的內容。謝謝大家的支持!