手把手教你用Docker搭建gitlab

文章目錄

  • 前言
  • 一、安裝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 硬盤中創建了文件夾用于掛載數據。這樣即使容器重新啟動,所有數據也會保留。原本我打算專門寫一篇關于數據持久化的文章,但考慮到其實際用途不大,所以決定將這一內容融合到現有的文章中。
如果想了解更多的可以自行去官方文檔或其他博客學習。


總結

感謝您閱讀這篇文章!我致力于將技術內容講解得通俗易懂,讓每一位讀者都能輕松上手。如果您覺得這篇文章對您有所幫助,請不吝點贊支持。如果有任何疑問或建議,歡迎在評論區留言,您的反饋將幫助我不斷改進,打造更完美的內容。謝謝大家的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897602.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897602.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897602.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于springboot住院管理系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 隨著世界經濟信息化、全球化的到來和電子商務的飛速發展,推動了很多行業的改革。若想達到安全,快捷的目的,就需要擁有信息化的組織和管理模式,建立一套合理、暢通、高效的線上管理系統。當前的住院管理存在管理效率低下&…

JVM常用概念之常量

問題 final修飾的字段就一定是不能重新賦值嗎? 基礎知識 常量變量是使用常量表達式初始化的原始類型或 String 類型的最終變量。變量是否為常量變量可能對類初始化、二進制兼容性和明確賦值有影響。 —Java 語言規范 實驗 用例源碼-重新賦值 import java.lang.reflect.Fie…

數據采集技術之python網絡爬蟲(中國天氣網的爬取)

一、爬取中國天氣網所有地區當天的天氣數據(PyCharm): 網址:https://www.weather.com.cn/ 下面爬取數據: 因為現在已經到了夜間,所以白天的數據已經不見了,但原理是一樣的。 二、代碼以及詳情…

樹莓集團落子海南,如何重構數字產業生態體系?

樹莓集團在海南的布局,是其整體商業戰略中的關鍵一環。這背后,是對政策機遇、產業協同、以及區域優勢的深度考量。 政策機遇 海南自貿港建設帶來前所未有的政策紅利,包括貿易、投資、資金等方面的自由便利。樹莓集團緊抓這一機遇&#xff0…

Ollama本地部署deepseek-r1蒸餾版

Docker安裝Ollama 拉取鏡像 docker pull ollama/ollama? 啟動-使用GPU docker run -d --gpusall -p 11434:11434 --name ollama ollama/ollamadocker run : Docker 的核心命令,用于創建并啟動一個新的容器。 -d : 后臺模式(detached mode&#xff09…

41.HarmonyOS NEXT Layout布局組件系統詳解(八):自定義樣式與類

溫馨提示:本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦! HarmonyOS NEXT Layout 布局組件系統詳解(八):自定義樣式與類 文章目錄 HarmonyOS NEXT Layout 布局組件系統詳…

【Go | 從0實現簡單分布式緩存】-7:增加etcd和gRPC功能

本文目錄 1.序2.引入etcd緩存流程項目結構 3.gocachepb.proto4.服務注冊register.go5.服務發現discover.go6.gRPC客戶端client.gopeers.goclient.go 7.gRPC服務端實現server.go一些問題緩存獲取流程緩存設置流程為什么要帶超時的上下文? 1.序 GeeCache項目并沒有引…

Pytorch系列教程:可視化Pytorch模型訓練過程

深度學習和理解訓練過程中的學習和進步機制對于優化性能、診斷欠擬合或過擬合等問題至關重要。將訓練過程可視化的過程為學習的動態提供了有價值的見解,使我們能夠做出合理的決策。訓練進度必須可視化的兩種方法是:使用Matplotlib和Tensor Board。在本文…

18 | 實現簡潔架構的 Handler 層

提示: 所有體系課見專欄:Go 項目開發極速入門實戰課;歡迎加入我的訓練營:云原生AI實戰營,一個助力 Go 開發者在 AI 時代建立技術競爭力的實戰營;本節課最終源碼位于 fastgo 項目的 feature/s14 分支&#x…

藍隊第三次

1.了解什么是盲注 盲注(Blind SQL Injection)是SQL注入的一種形式,攻擊者無法直接通過頁面回顯或錯誤信息獲取數據,而是通過觀察頁面的布爾狀態(真/假)或時間延遲來間接推斷數據庫信息。例如,通…

sql server 2016 版本補丁說明

包信息和發布類型 Microsoft為創建和分發的 SQL Server 的所有軟件更新包采用了標準化命名架構。 軟件更新包是一個可執行文件(.exe 或 .msi)文件,其中包含一個或多個文件,這些文件可能應用于 SQL Server 安裝以更正特定問題。 …

STM32之I2C硬件外設

注意:硬件I2C的引腳是固定的 SDA和SCL都是復用到外部引腳。 SDA發送時數據寄存器的數據在數據移位寄存器空閑的狀態下進入數據移位寄存器,此時會置狀態寄存器的TXE為1,表示發送寄存器為空,然后往數據控制寄存器中一位一位的移送數…

從青銅到王者:六大排序算法實戰解析

前言 在編程的世界里,排序算法如同一顆璀璨的明珠,閃耀著智慧的光芒。它不僅是計算機科學的基礎知識點,更是每一位程序員必備的技能。今天,就讓我們一同走進排序算法的世界,深入探究冒泡排序、選擇排序、插入排序、快速排序、歸并排序、堆排序這六大經典算法的精髓所在,…

小程序配置webview

1.在微信公眾平臺配置業務域名 1)包括把校驗文件放在服務器根目錄 2)配置域名 2.在小程序中 新建文件 小程序新建頁面:web-view json配置:{ "pageOrientation": "landscape", "renderer":&qu…

不用 Tomcat?SpringBoot 項目用啥代替?

在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認的容器技術,而且是內嵌式的Tomcat。 同時,SpringBoot也支持Undertow容器,我們可以很方便的用Undertow替換Tomcat,而Undertow的性能和內存使…

線索二叉樹構造及遍歷算法

線索二叉樹構造以及遍歷算法 線索二叉樹(中序遍歷版)構造線索二叉樹構造雙向線索鏈表遍歷中序線索二叉樹 線索二叉樹(中序遍歷版) 中序遍歷找到對應結點的前驅(土方法) #mermaid-svg-eunGO5d2GhjLxCn5 {fo…

基于SpringBoot的“體育購物商城”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“體育購物商城”的設計與實現(源碼數據庫文檔PPT) 開發語言:Java 數據庫:MySQL 技術:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體模塊設計 前臺用戶登錄界面 系統首頁界面…

數據篇| App爬蟲入門(一)

App 的爬取相比 Web 端爬取更加容易,反爬蟲能力沒有那么強,而且數據大多是以 JSON 形式傳輸的,解析更加簡單。在 Web 端,我們可以通過瀏覽器的開發者工具監聽到各個網絡請求和響應過程,在 App 端如果想要查看這些內容就需要借助抓包軟件。常見抓包軟件有: ?工具名稱??…

go context學習

1.Context接口2.emptyCtx3.Deadline()方法4.Done()方法5.Err方法6.Value方法()7.contex應用場景8.其他context方法 1.Context接口 Context接口只有四個方法,以下是context源碼。 type Context interface {Deadline() (deadline time.Time, …

在VMware Workstation Pro上輕松部署CentOS7 Linux虛擬機

首先我們需要下載VM虛擬機和Centos7的鏡像 下載并安裝VMware Workstation Pro 訪問VMware Workstation Pro官網下載 https://www.vmware.com/ 第二步:下載centos7鏡像 訪問centos官網下載 https://www.centos.org/ 開始部署Centos7 點擊創建新的虛擬機 這里是Cen…