在Ubuntu用Docker部署漢化版GitLab
專案的開發通常都離不開對程式碼的版本管理。簡單的方式可以在內網搭建一個倉庫,然後新增各個組員的公鑰來共同開發。這種方式不僅不利於管理和維護,而且功能過於單一。我們很希望有像GitHub這樣的平臺服務,功能齊全且好維護。但由於GFW的原因,有時候訪問延遲過大。更重要的是,github免費版只支援開源專案,私有專案需要付費,而且比較昂貴,並不適合公司的專案。
GitLab 是一個類似與GitHub的專案,功能十分強大且介面美觀,支援程式碼管理、issue管理、程式碼review和CI等功能。它提供免費的社群版和付費版,社群版足夠滿足我們的專案需求。本篇文章我將介紹GitLab社群版的安裝和配置。
安裝
基於 GitLab 官方社群版 Docker 映象製作的中文 Docker 映象, 漢化補丁來自網友 larryli (8.8.5之前), 後續由網友 xhang 維護。
由於漢化工作需要大量的人力, 所以中文版的版本會比官方的版本稍低, 如果刻意最求最新版, 請使用官方的 GitLab Docker 映象。
1. 硬體需求及軟體版本
硬體需求
- CPU: 2核
- 記憶體: 4G記憶體
- 硬碟: 5-10G的硬碟儲存
不滿足以上配置,在使用中要麼會比較慢,要麼會報500錯誤。甚至部署失敗,我第一次在我用於翻牆的低配伺服器(1核、1G記憶體)上部署GitLab,啟動失敗。
軟體版本
- 系統: Ubuntu16.04
- Docker: 17.03.2-ce
- GitLab: beginor/gitlab-ce:11.1.4-ce.0
2. 在Ubuntu系統安裝Docker
在Ubuntu系統安裝Docker一行程式碼就可以搞定。我剛開始搜尋安裝方法時,卻發現大家的方法都很複雜,例如Ubuntu 16.04 安裝 Docker。有知道其中區別的朋友,還請指教。
apt install docker.io
安裝後可以通過docker -v
測試時候安裝成功
[email protected]:~# docker -v
Docker version 17.03.2-ce, build f5ec1e2
在Docker版本號中CE代表社群版,EE代表企業版
3. 建立容器外掛目錄
gitlab/gitlab-ce
容器需要三個目錄,分別存放應用資料、日誌和配置檔案
我們建立三個目錄分別存放這些資料,便於GitLab的維護和遷移。即時是GitLab被我們玩壞了,只要這三個檔案還存在,我們就可以很簡單的重建
sudo mkdir -p /gitlab/data
sudo mkdir -p /gitlab/logs
sudo mkdir -p /gitlab/config
4. 啟動GitLab容器
sudo docker run --detach \
--publish 8443:443 --publish 8000:80 --publish 2222:22 \
--name gitlab \
--restart always \
--volume /gitlab/config:/etc/gitlab \
--volume /gitlab/logs:/var/log/gitlab \
--volume /gitlab/data:/var/opt/gitlab \
-log-driver=none \
beginor/gitlab-ce:11.1.4-ce.0
引數說明
- –detach 設定容器後臺執行
- –publish 暴露 https、http和ssh埠,關於埠下文會細說
- –name 容器名稱
- –restart always 每次啟動容器就重啟GitLab
- –volume 設定GitLab資料掛載點
第一次啟動容器會很慢,需要三分鐘左右。可以隨時通過docker ps
檢視啟動進度。當STATUS
由starting
變為health
時,就說明啟動成功了。
5. 配置GitLab
現在就可以通過地址:http://IP:8000
訪問GitLab,但是為了正常使用,我們還需要配置GitLab。
我們需要修改三個引數:
- external_url
- ssh 埠
- nginx監聽埠
GitLab的配置檔案在我們外掛的磁碟下/gitlab/config/gitlab.rb
修改external_url
sudo vim /gitlab/config/gitlab.rb
# 可以通過`/`搜尋需要修改的引數
external_url 'http://IP:8000' # IP填寫GitLab部署的伺服器的IP
修改ssh埠
如果不修改ssh的埠,clone和提交程式碼時一直需要輸入密碼。
因為通過ssh連結gitlab時預設訪問的是22埠,但是使用docker部署,22埠在宿主機一直被佔用,所以對映為2222埠,需要修改gitlab配置檔案
### GitLab Shell settings for GitLab
gitlab_rails['gitlab_shell_ssh_port'] = 2222
# gitlab_rails['gitlab_shell_git_timeout'] = 800
修改nginx監聽的埠
nginx['listen_port'] = 80
更多與埠相關的知識參考GitLab CE 搭建小結 external_url 設定 到 修改 ssh 埠的內容
到此時,我們就完成了通過Docker方式安裝GitLab的所有工作,重啟容器即可使用
#重啟容器
docker restart gitlab
6. 訪問頁面
GitLab的訪問地址是:http://IP:8000/
。第一次訪問會讓使用者修改密碼,修改成功後就可以通過賬號(root)和該密碼登入GitLab。
當然為了正常使用GitLab,新增SSH公鑰是必須的。GitLab的使用方式和GitHub基本一致,不熟悉的朋友可以自行搜尋教程
BUG
1. 容器啟動失敗
有可能是伺服器配置太低
2. 克隆專案和上傳程式碼一直需要輸入密碼
沒有修改GitLab的ssh埠,具體操作可以看上文 配置GitLab
運維
重啟gitlab
sudo docker restart gitlab
檢視gitlab啟動狀態
sudo docker ps
升級GitLab