通過Docker安裝GitLab(基於Centos7虛擬機)

本文選自微信公衆號:superdiao的果殼

 

可能很多人沒有聽過GitLab這個東西,但是卻聽過GitHub(畢竟全球最大代碼開源社區,即傳說中的“全球最大同性交友網站”),註冊免費用戶即可在GitHub上免費託管開源代碼,如需建立私有倉庫必須付費。

事實上,兩者非常相似,均屬於第三方基於Git開發的代碼版本控制產品,GitLab可以看成是個人版的GitHub,因爲可以將自己的代碼放到自己搭建的服務器上去,適合團隊內部協作開發。這樣一來安全性得到了保證,關鍵在於它還是免費的開源工具,同時它支持Web頁面操作。

爲了做到這一點,是否需要自己買或者租一個服務器呢?

答案是否定的。因爲有了虛擬機,我們就有了自己的服務器,也就是說我們可以在虛擬機上搭建好GitLab,然後通過主機的瀏覽器去訪問虛擬機的Ip地址就可以進行操作了。

那究竟以什麼方式去搭建這個工具呢?有的朋友會覺得從網站下個包然後放到服務器上去安裝,其實暫且不說這個過程麻煩(因爲很多依賴包需要下載),下包的過程也是很漫長的,運氣不好還會各種中斷而導致失敗,就算通過國內的鏡像網站去下載也不是好辦法。

此時,Docker的作用就發揮出來了。不熟悉Docker的可以參考本號的往期文章(《centos7安裝docker》)。理由簡單地來說就是已經有好心人將GitLab封裝好成一個容器放到Docker官網上了,我們需要做的只是拉取它的Image下來到自己的服務器(也就是前面說的虛擬機),配合幾條命令就可以搭建好了。

 

環境要求

最低配置要求:虛擬機最好2核或以上,內存至少2G
虛擬機數量:單個即可
通信要求:能夠和主機進行通信,即互相ping通

 

1. 拉取鏡像

[root@docker ~]# docker pull gitlab/gitlab-ce
#一般需要幾分鐘才能拉取完鏡像

# 檢查是否成功,看到gitlab/gitlab-ce就表示拉取成功
[root@docker etc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    latest              5f5beb0b3864        4 days ago          1.89GB
python              3.7-slim-buster     5b03cb8574a0        2 months ago        179MB
postgres            latest              4a82a16ee75c        3 months ago        394MB
redis               4                   8280a2c45ce5        3 months ago        89.2MB

 

2. 運行鏡像

# 將 GitLab 的配置 (etc) 、 日誌 (log) 、數據 (data) 放到容器之外, 便於日後升級。
[root@docker ~]# mkdir -p /mnt/gitlab/etc 
[root@docker ~]# mkdir -p /mnt/gitlab/log 
[root@docker ~]# mkdir -p /mnt/gitlab/data

# 分別指定映射的端口,容器名字,掛載的卷(config,logs,data),鏡像
[root@docker ~]# docker run -d \
-p 2222:22 -p 8080:80 -p 8443:443 \
--name gitlab \
-v /data/gitlab/config/:/data/gitlab/config/ \
-v /data/gitlab/logs/:/data/gitlab/logs/ \
-v /data/gitlab/data/:/data/gitlab/data/ \
gitlab/gitlab-ce:latest

# 檢查是否運行成功,看到gitlab說明沒問題:
[root@docker etc]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                      PORTS                                                               NAMES
d94a3639e722        gitlab/gitlab-ce:latest   "/assets/wrapper"        16 hours ago        Up 16 hours (healthy)       0.0.0.0:2222->22/tcp, 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp   gitlab

確認以上步驟無誤後,以下操作均需要在容器內進行:

 

3. 配置GitLab

# 進入容器內
[root@docker ~]# docker exec -it gitlab /bin/bash
root@d94a3639e722:/# 
# 出現上面一行說明已經進入容器內了

# 容器內進行配置相關配置文件
root@d94a3639e722:/# vim /etc/gitlab/gitlab.rb

添加下面的配置(填寫虛擬機Ip)

external_url 'http://192.168.38.132'

保存並退出

 

3.1 更新配置

root@d94a3639e722:/# gitlab-ctl reconfigure
# 該步驟至少需要幾分鐘

 

3.2 重啓gitlab

root@d94a3639e722:/# gitlab-ctl restart
# 查看運行狀態是否正常:
root@d94a3639e722:/# gitlab-ctl status
run: alertmanager: (pid 1193) 58248s; run: log: (pid 299) 58494s
run: gitaly: (pid 1202) 58247s; run: log: (pid 303) 58494s
run: gitlab-exporter: (pid 1209) 58247s; run: log: (pid 293) 58494s
run: gitlab-workhorse: (pid 1218) 58246s; run: log: (pid 287) 58494s
run: grafana: (pid 1227) 58246s; run: log: (pid 283) 58494s
run: logrotate: (pid 37010) 3202s; run: log: (pid 291) 58494s
run: nginx: (pid 1244) 58245s; run: log: (pid 289) 58494s
run: postgres-exporter: (pid 1249) 58244s; run: log: (pid 297) 58494s
run: postgresql: (pid 1268) 58244s; run: log: (pid 305) 58494s
run: prometheus: (pid 1278) 58243s; run: log: (pid 285) 58494s
run: redis: (pid 1286) 58243s; run: log: (pid 311) 58494s
run: redis-exporter: (pid 1422) 58243s; run: log: (pid 295) 58494s
run: sidekiq: (pid 1547) 58239s; run: log: (pid 309) 58494s
run: sshd: (pid 1554) 58239s; run: log: (pid 31) 58510s
run: unicorn: (pid 1561) 58237s; run: log: (pid 307) 58494s

 

如果配置得有問題,但是不想逐個去改,那麼首先應該在容器外停止相應的容器:“docker stop gitlab”,再通過“docker rm containerID”這一命令刪除指定容器,而鏡像則不用動。containerID可以用“docker ps -a”獲取。

至此配置算是完成了,相對於手動安裝的方式(筆者嘗試過,發現既繁瑣又易失敗),這種方式簡單快捷且不容易出錯。

當然,還需要通過瀏覽器來驗證是否安裝成功:

 

4. 驗證安裝

打開主機瀏覽器(需要等幾分鐘,即使出現502頁面),輸入網址:http://192.168.38.132:8080/(虛擬機IP加上端口號),填寫相關信息就可以使用了!

 

 

總結一下安裝的流程:

拉取鏡像—>運行鏡像—>配置GitLab—>驗證安裝。

 

希望本文對各位有所幫助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章