在 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等)。
下面的內容假設大家已經安裝好了 Docker 和 Docker Compose。Docker Compose 是用來定義並執行多個 Docker 容器的 – Docker 叢集管理。有了 Docker Compose,我們就不用手動執行多條命令來啟動一個一個的容器,並建立容器間的關係,只需要一條命令就完成所有服務的建立和執行。
下面就開始吧!
1. 下載 Compose 檔案並修改配置
Docker hub 中有許多 GitLab 映象,比如 GitLab 官方提供的 gitlab/gitlab-ce,該映象包含了執行 GitLab 所需的所有內容,只需要這一個映象就能使用 GitLab。而由 sameersbn 提供的 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 則讓我們的生命得以延續。讓我們盡情享受這一切美好的世界吧!