天天看點

用Docker安裝Gitlab

Gitlab簡介

GitLab

是一個Git的代碼托管工具,有免費的社群版允許我們在本地搭建代碼托管網站,也有付費的企業版網站,能夠線上托管代碼。傳統方式是手動下載下傳Gitlab的軟體包,然後搭建相關運作環境。不過這種方式非常麻煩,而且如果要更換機器所有配置工作又得重來一邊,如果有同學學過Java的話應該記得初學Java時配置環境變量的恐懼吧?是以更好的辦法就是使用現在非常流行的Docker。

那麼

Docker

又是個什麼東西呢?這是一個虛拟化的運作工具,主要目的是将軟體和整個運作環境打包起來,讓我們不需要配置即可快速運作軟體。由于Docker依賴于Linux核心的某些特性,是以Docker隻能在Linux上運作。Windows上的Docker實際上是開了一個虛拟機。Docker目前好像沒有比較好的中文社群,我谷歌了一下隻找到了這個

Docker中文社群

,看起來還行。

安裝docker

我用的是Archlinux,是以安裝指令如下。

sudo pacman -S docker
           

如果使用其他系統的話需要改用相應的包管理工具。

安裝好之後,來看看Docker的版本。

sudo docker version
           

應該會顯示類似下面這樣的資訊。Docker用戶端的版本最好在1.10以上。

Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3727
 Built:        Sun Feb 12 02:40:56 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   092cba3727
 Built:        Sun Feb 12 02:40:56 2017
 OS/Arch:      linux/amd64
 Experimental: false

           

這樣Docker就安裝成功了。

使用阿裡雲加速Docker

Docker官方鏡像網站部署在外網,是以我們國内下載下傳比較慢。看了一下國内最好的Docker加速服務就是阿裡雲了。阿裡雲的其他鏡像比如Maven鏡像之類的也都不錯。

首先需要注冊一個

阿裡雲

的帳号,可能還需要其他一點資訊。然後進入

容器Hub服務控制台

,中間有一個加速器。我們點選它之後,阿裡雲會為我們建立一個專屬加速器位址。

然後需要檢查Docker用戶端的版本,如果小于1.10,隻能按照自己系統版本尋找相應的辦法了。如果大于等于1.10,就可以直接使用下面的配置方法。配置方法很簡單,在

/etc/docker/daemon.json

中添加一段配置。如果沒有該檔案則建立。

{
    "registry-mirrors": ["<your accelerate address>"]
}
           

然後重新開機Docker服務。

sudo systemctl daemon-reload
sudo systemctl restart docker
           

下載下傳Gitlab

配置好加速器之後,下載下傳就很快了。直接執行下面的指令,稍等片刻之後,Docker就會将Gitlab下載下傳好了。

sudo docker pull gitlab/gitlab-ce:latest
           

啟動Gitlab

用下面的指令啟動一個預設配置的Gitlab。如果我們隻在本機測試使用的話,将hostname替換為localhost。如果需要讓外部系統也能通路的話使用外網IP位址。

sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest
           

首次啟動可能比較慢,需要等待一分鐘左右的時間。我們可以使用

sudo docker ps

指令檢視目前所有Docker容器的狀态。當它的狀态由starting變為運作時間時,說明成功啟動了。我們直接使用上面配置的IP位址(如

localhost

)在浏覽器中通路即可。

初次使用需要我們建立預設管理者密碼,随便指定一個就行了。然後我們需要注冊一個普通使用者。以後的使用方法和Github這樣的工具很相似了。

配置Gitlab

剛剛啟動Gitlab的時候需要我們輸入一個密碼,這個密碼是管理者使用者的密碼。我們在登入那裡使用root作為使用者名,然後用剛剛設定的密碼,就可以以管理者身份登入Gitlab。

登入進去之後,點選右上角的齒輪圖示,即可進入到管理者頁面。在這裡我們可以設定很多東西。比如說,預設情況下每個使用者隻能建立10個倉庫,我們可以改變這個設定。在管理者頁面點選右面的齒輪,再點選設定,就會進入到系統設定中。然後找到Default projects limit一項,我們給它設個小目标,設它一個億,這樣就相當于無限倉庫了。當然如果你實際硬碟滿了也就不能在建立更多項目了。

如果這些配置還是不能滿足你的需求的時候,還可以直接配置Gitlab。首先進入到Docker環境中。我們使用下面的指令進入Docker環境的bash中。gitlab是剛剛指定的Gitlab名稱。

sudo docker exec -it gitlab /bin/bash
           

然後就進入了Docker的環境中,我們可以把它當作一個獨立的系統來使用。然後編輯

/etc/gitlab/gitlab.rb

檔案,這是Gitlab的全局配置檔案。所有選項都可以在這裡配置。

nano /etc/gitlab/gitlab.rb
           

詳細的配置方法我也不會,直接看

官方文檔

吧。

更新Gitlab

以後如果需要更新Gitlab版本,首先需要停止并删除目前的Gitlab執行個體。

sudo docker stop gitlab
sudo docker rm gitlab
           

然後在拉取最新版的Gitlab。

sudo docker pull gitlab/gitlab-ce:latest
           

然後在使用上次的配置運作Gitlab即可。不用擔心資料會丢失。隻要你的volume參數指定還和上次一樣,Gitlab就會自動讀取這些配置。

sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
           

最後來看看使用Docker的優勢。還是在Gitlab的Bash中。我們依次輸入下面的指令,看看有什麼反應。

ruby --version
git --version
redis-cli --version
psql --version
           

不出意外的話應該會顯示對應軟體的版本。我們看到Gitlab使用了4個開源軟體或運作環境:ruby、git、redis和postgresql。如果我們手動安裝Gitlab的話,這幾個軟體也必須分别安裝和配置好。這個任務的難度可是非常大的。而且如果需要在多台機器上配置,那麼任務量就更大了。但是如果使用Docker的話,我們甚至完全沒必要知道這幾個軟體的存在,簡單兩條指令即可建立和運作Gitlab。這正是Docker的魅力,難怪現在越來越多的公司在使用Docker。

看到有個貌似不錯的

Docker教程

,大家可以看看。

參考資料