使用Docker搭建GitLab實踐

fefre 10年前發布 | 246K 次閱讀 GitLab Git 版本控制系統

使用Docker搭建GitLab實踐

SVN與GIT,二者皆須會

當 前版本控制系統(Version Control System,VCS)有集中化版本版本控制系統(Centralized Version Control System,簡稱 CVCS)和分布式版本控制系統(Distributed Version Control System,簡稱 DVCS)。 
集中化版本控制系統的代表是SVN,分布式版本控制系統的代表是GIT。

熟悉SVN已兩年,玩過SVNKIT、svn cli、pysvn,當然也搭建過SVN服務端。 
平常偶爾也通過GitHub或Git@OSC使用GIT,web界面所提供的功能強大,簡單易用。 
而SVN在業界目前沒發現有開源的成熟的類似GitHub這樣的解決方案; 
GitLab號稱是GitHub的開源實現,它擁有與Github類似的功能,其中Git@OSC就是基于 GitLab 項目搭建。 
也一直有想法自己搭建GitLab,用來體驗、使用、熟悉它。 
而查閱過多篇關于GitLab的搭建的官方文檔或博客,深深的感覺搭建過程過于繁瑣,非一日之功,于是搭建GitLab計劃就被擱淺了。 
當然,也有第三方提供一鍵安裝Gitlab的解決方案(如Bitnami GitLab Installers),但不是很感冒,并沒有做嘗試。

Docker,讓GitLab安裝部署更簡單

而今Docker流行,它使得軟件安裝部署變得更簡單,通過Docker鏡像與容器就可以快速搞定這些繁瑣的、重復的安裝部署過程,并且鏡像可移植。 
之前曾用Docker部署過Jenkins和ReviewBoard,切身體會到了Docker的帶來的便利。 
有了之前對Docker的了解與實踐,于是開始了使用Docker搭建GitLab的實踐。 
GitLab的Docker鏡像已經有大牛做好,并且一直在隨著GitLab這個版本帝的升級而進行維護,詳見其GitHub倉庫,并且文檔也很健全。

使用Docker搭建GitLab實踐

使用docker-compose快速啟動Gitlab

wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
docker-compose up

三步走運行GitLab容器

1、運行一個PostgreSQL容器

docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:9.4-2

2、運行一個Redis容器

docker run --name gitlab-redis -d \
--volume /srv/docker/gitlab/redis:/var/lib/redis \
sameersbn/redis:latest

3、運行GitLab容器

docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:7.13.1

注意:GitLab應用的啟動需要幾分鐘。

通過csphere查看gitlab相關容器

使用Docker搭建GitLab實踐

訪問GitLab

訪問地址:http://localhost:10080,使用默認的用戶名和密碼登錄。 
默認的用戶名:root
默認的密碼:5iveL!fe

使用Docker搭建GitLab實踐

GitLab前不久啟用了全新logo,界面布局也有變化:

使用Docker搭建GitLab實踐

GitLab更多配置

通過上面的步驟已經快速啟動了GitLab容器,可以用來測試使用,但是要在生產環境使用GitLab還需要進行一系列配置。 
GitLab的一系列配置信息(如:GitLab_HOST、Mail、LDAP等)目前還無法從web界面進行配置。 
而docker-gitlab為這提供了以環境變量的形式提供了一系列可配置的參數。 
這些環境變量需要在GitLab鏡像啟動的時候指定。 
如果當前GitLab容器已啟動,可以停止、刪除容器,然后基于GitLab鏡像指定環境變量再創建、啟動新容器即可。

GITLAB_HOST配置

GITLAB_HOST: The hostname of the GitLab server. Defaults to localhost 
這個值會被Gitlab用來生成repo的鏈接,所以必須要設置。否則,在創建的repo中,會發現所有的repo鏈接都是以localhost為hostname。

MAIL配置

mail可以用來在用戶注冊的時候給用戶發送郵箱認證鏈接相關信息。 
默認的mail配置使用的是gmail,需要一個用戶名和密碼來登錄到gmail服務器。 
當然,也可以通過指定一系列SMTP相關的環境變量來使用其他郵箱(如QQ郵箱、網易郵箱)作為郵件服務器。

時區配置

GitLab默認的時區是UTC,北京時區為UTC+8區。 
可以通過指定環境變量GITLAB_TIMEZONE=Beijing來更改時區。

包括但不限于上面的配置,GitLab還可以定制更多配置信息,如LDAP、SSL、OmniAuth Integration等等,詳情請參考官方說明文檔。

Docker-GitLab搭建遇到的問題

磁盤空間不足

PostgreSQL容器在啟動之后迅速關閉,再次啟動亦是如此,且并沒有給出錯誤提示信息。 
通過使用docker logs gitlab-postgresql查看容器日志時獲得:No space left on device,在主機上清理磁盤空間后解決了該問題。

頁面提供的訪問gitlab的默認用戶名和密碼不準確(目前已修正)

頁面提供的默認密碼為password,登錄失敗,后來使用5iveL!fe這個登錄成功。 
查看docker-gitlab的提交日志,關于默認密碼,有如下行:

使用Docker搭建GitLab實踐

同時,與之相關的還有issue 389

使用Docker搭建GitLab實踐

為Docker-GitLab做貢獻

在閱讀docker-gitlab的README時,發現文檔有一處使用的fig(docker-compose的前身), 
于是fork了docker-gitlab的源碼,并提交了一個pull request將fig修改為docker-compose, 
目前該PR已經被Merged,很榮幸自己也成為docker-gitlab的一個contributor。

使用Docker搭建GitLab實踐

使用Docker搭建GitLab實踐

使用Docker搭建GitLab實踐

后續Docker-GitLab研究計劃

  • 研究docker-gitlab的其他配置,如LDAP、SSL、OmniAuth Integration等

  • 研究docker-gitlab的安裝配置文件(docker-gitlab/assets)

  • 研究docker-gitlab的Dockerfile

  • 研究docker-gitlab的entrypoint.sh(該shell腳本近千行)

參考

 本文由用戶 fefre 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!