Git在當(dāng)前團(tuán)隊開發(fā)中重要作用已然無須多言焙压。Git、GitHub庵芭、Bitbucket妹懒、GitLab之間的聯(lián)系與區(qū)別是什么,看一下《Git團(tuán)隊協(xié)作》這本書也能搞清楚双吆。
本文的主要目的則是對第12章《GitLab 上自行管理的協(xié)作》進(jìn)行一些補(bǔ)充眨唬。在本書中安裝GitLab是通過虛擬機(jī)的方式,略微重了些好乐,如果我們可以用Docker來安裝匾竿,是不是可以更方便些呢( 離不開的工具之《Docker開發(fā)指南》)?答案當(dāng)然是可以的蔚万!
基礎(chǔ)指令
最基礎(chǔ)的docker 命令如下:
sudo docker run -d \
--hostname gitlab.example.com \
-p 443:443 \
-p 80:80 \
-p 22:22 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
下面解釋一下重要的參數(shù):
其中--hostname 參數(shù)對應(yīng)的是私有倉庫的域名岭妖,這個域名可以是公開注冊的也可以是自己私有dns命名的,但是域名對應(yīng)的ip必須與部署GitLab的服務(wù)器的ip保持一致反璃。
-p 對應(yīng)的是端口映射昵慌,443端口用于HTTPS服務(wù)、80端口用于HTTP服務(wù)淮蜈、22端口用于ssh服務(wù)斋攀。我們可以根據(jù)實際需要和服務(wù)器的情況開放相應(yīng)的端口:比如我們可以只使用HTTPS服務(wù),那么就只需要映射443端口即可礁芦。
--name 是容器名蜻韭。
--restart 為true的時候悼尾,服務(wù)器重啟的時候,容器也會被自動重啟肖方。
-v 是服務(wù)器目錄與容器目錄的對應(yīng)關(guān)系闺魏,會把GitLab容器上的文件、數(shù)據(jù)保存在服務(wù)器的對應(yīng)目錄(實際上服務(wù)器上的目錄名也可以自擬)上俯画,即便容器被刪除了析桥,只要數(shù)據(jù)還在,重新啟動一個容器依然可以提供服務(wù)艰垂。
最后一行 gitlab/gitlab-ce:latest 是鏡像的名稱和版本泡仗, gitlab/gitlab-ce 是社區(qū)版、 gitlab/gitlab-ee是企業(yè)版猜憎。
實現(xiàn)HTTPS服務(wù)的細(xì)節(jié)
需要注意的是要想讓GitLab真正提供HTTPS服務(wù)娩怎,還必須通過證書加密??,加密證書可以免費申請胰柑、購買或者通過自簽名的方式獲得(《HTTPS權(quán)威指南》)截亦,此處不再贅述。
1柬讨、下面假設(shè)你已有一個域名 gitlab.example.com崩瓤,并且已經(jīng)獲得了該域名對應(yīng)的證書:gitlab.example.com.key、gitlab.example.com.crt 踩官。
2却桶、在服務(wù)器的 "/srv/gitlab/config" 目錄(對應(yīng)的是容器里的"/etc/gitlab"目錄)下創(chuàng)建一個 ssl目錄
sudo mkdir -p /srv/gitlab/config/ssl
3、將gitlab.example.com.key蔗牡、gitlab.example.com.crt 拷貝到服務(wù)器的 "/srv/gitlab/config/ssl"目錄中
4颖系、進(jìn)入gitlab容器并打開配置文件
sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb
5、將文件中的相關(guān)行修改如下:
external_url "https://gitlab.example.com"
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
6辩越、重啟容器
sudo docker restart gitlab
7集晚、訪問 https://gitlab.example.com,就可以進(jìn)入到相應(yīng)的GitLab私有倉庫頁面了区匣。
當(dāng)然偷拔,上述的操作還是有些繁瑣,有沒有更好的方法亏钩?請見下集 《Docker Compose實例之nginx反向代理GitLab》