1. 程式人生 > >在Ubuntu用Docker部署漢化版GitLab

在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 檢視啟動進度。當STATUSstarting變為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

參考資料