1. 程式人生 > >在 Docker 中使用 GitLab

在 Docker 中使用 GitLab

“LOST TIME IS NEVER FOUND AGAIN.”BENJAMIN FRANKLIN

“歲月既往,一去不回。”本傑明·富蘭克林

小引

上一篇中,我介紹瞭如何在 Docker 中使用 MySQL,最近我們的專案版本管理也逐漸從 SVN 遷移到 Git 上,所以本文我將介紹如何利用 Docker 來快速搭建企業內部的 GitLab。

簡介

大家都知道 GitHub 是利用 Git 做的一個線上程式碼版本管理工具,該工具免費版的程式碼庫全部都是公開的,如果想要使用私有庫,那只有付費才行。而 GitLab 的初衷則是提供給企業或者個人搭建內部的程式碼版本管理工具,並且具有與 GitHub 相似的功能。雖然我們有多種方法來搭建自己的 Git 庫,但是這裡我推薦大家藉助 GitLab 來搭建。GitLab 有很豐富的功能(Git 版本管理、檔案瀏覽、WIKI、Code Review、Issue 管理、Code Snippets、Web Hooks、CI、CD等)。

下面的內容假設大家已經安裝好了 DockerDocker Compose。Docker Compose 是用來定義並執行多個 Docker 容器的 – Docker 叢集管理。有了 Docker Compose,我們就不用手動執行多條命令來啟動一個一個的容器,並建立容器間的關係,只需要一條命令就完成所有服務的建立和執行。

下面就開始吧!

1. 下載 Compose 檔案並修改配置

Docker hub 中有許多 GitLab 映象,比如 GitLab 官方提供的 gitlab/gitlab-ce,該映象包含了執行 GitLab 所需的所有內容,只需要這一個映象就能使用 GitLab。而由 sameersbn 提供的

sameersbn/gitlab 則將 GitLab 分成了三個不同的映象:資料庫、日誌、GitLab 服務,這樣做的好處便於解耦,以及符合 Docker 的設計原理:輕量級、單一的映象功能。在此,我們使用 sameersbn/gitlab,並結合提供的 Docker Compose 檔案來啟動 GitLab。

首先是將docker-compose.yml檔案下載到本機,如下程式碼所示:

下載完成之後,在檔案中,我們可以看到 GitLab 的很多配置都已經引數化了,包資料卷的配置、服務的埠、備份時機和郵件配置等。

在這裡我利用 vi 將其中的 volumes 做適當的修改,儲存至如下路徑:

1
/Users/BeyondVincent/docker/gitlab/

我修改後的完整程式碼可以來這裡參考

2. 啟動 GitLab

下一步,修改完 docker-compose.yml,我們就可以利用如下一行命令來啟動 GitLab 了。

docker-compose up

上面的這行命令,首先會下載相關的映象,然後依次建立並啟動容器。如下圖所示:

當啟動完成之後,我們就可以在瀏覽器中輸入http://localhost:10080,如果能正確開啟,那麼說明 GitLab 建立啟動成功。如下圖所示:

3. 停止 GitLab

執行下面這條命令就可以將 GitLab 停止。

docker-compose stop

4. 備份

資料的備份歷來都是很重要,平時如果不注重備份,伺服器不出問題還好,要是伺服器掛了,後果很嚴重。sameersbn/gitlab 的備份使用如下命令即可完成:

docker-compose run gitlab app:rake gitlab:backup:create

該命令執行完之後,會在 gitlab 的 backups 目錄生成一個以當前時間戳為字首的壓縮檔案(例如 1474228372_gitlab_backup.tar),這個檔案就是備份檔案(整個庫都已經備份在這個檔案中)。完成備份檔案的建立之後,記得將該檔案備份至另外一個地方。

5. 從備份中還原

docker-compose run –rm gitlab app:rake gitlab:backup:restore BACKUP=1474228372

在上面的命令中,1474228372 為備份檔案的時間戳字首,該檔案位於 gitlab 的 backups 目錄中。同樣,一條命令就可以完成還原。

6. 加速器

由於網路問題,如果你的映象下載很慢,超出忍受範圍,那麼建議使用 DaoCloud 提供的加速器

7. 小結

如果說 GitLab 讓我們感受到了世界上有真正免費的午餐,那麼 Docker 則讓我們的生命得以延續。讓我們盡情享受這一切美好的世界吧!