1. 程式人生 > >以容器的方式執行GitLab

以容器的方式執行GitLab

以容器的方式執行GitLab

目錄:

一、環境及實驗目標

二、軟硬體需求:

三、準備資料目錄

四、執行容器

、配置GitLab

六、訪問頁面

七、其他注意事項

八、執行附圖

一、環境及實驗目標

實驗目標:在一臺虛擬機器上,準備好Docker環境,使用容器的方式執行gitlab映象,搭建一臺內部私有的gitlab伺服器,要能通過http://gitlab.abc.com域名訪問。

機器名:gitlab9

IP地址:192.168.3.169

訪問網址:http://gitlab.abc.com

、軟硬體需求:

CPU :最少1核,也能跑,慢!建議2核以上;

記憶體:最少4GB1GB Ram+3GB Swap

),建議4GB Ram以上;

儲存:根據各自需要而定,最少5-10GB以上可用空間,建議使用SSD

軟體:Ubuntu 16.04.03+Docker 1.12.3(我用的是這個版本)

不滿足以上配置,在使用中要麼會比較慢,要麼會報500錯誤。

建議:24GB20GB+空間,可滿足100使用者的基本使用。

實際生產中使用時,可根據使用者數和儲存量,確定硬體配置,

、準備資料目錄

#gitlab/gitlab-ce容器需要先建立三個目錄

#分別存放應用資料、日誌和配置檔案

#宿主機上/gitlab/data對應容器中/var/opt/gitlab

#宿主機上/gitlab/logs對應容器中/var/log/gitlab

#宿主機上/gitlab/config對應容器中/etc/gitlab

sudo mkdir -p /gitlab/data

sudo mkdir -p /gitlab/logs

sudo mkdir -p /gitlab/config

、執行容器gitlab/gitlab-ce

#啟動一個gitlab-ce容器

#--hostnameGitLab容器的主機名,不是對外發布的網站名。

sudo docker run --detach \

    --hostname gitlab.example.com \

    --publish 443:443 --publish 80: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 \

    gitlab/gitlab-ce:latest

#首次啟動可能比較慢,需要等待幾分鐘的時間。

#可以使用sudo docker ps命令檢視當前gitlab容器的狀態。

#當它的狀態由starting變為health時,說明成功啟動了。

、配置GitLab

#如果按照上述準備工作,配置好的宿主機上的三個目錄,

#GitLab的配置檔案在容器中為/etc/gitlab/gitlab.rb

#對應宿主機上的檔案為/gitlab/config/gitlab.rb

#直接使用vi編輯器,在宿主機上編輯該檔案即可。

sudo vi /gitlab/config/gitlab.rb

#注:使用Xshellssh遠端登入到宿主機,

#再執行sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb

#試圖到容器中執行vi命令,編輯配置檔案,會出錯!

#只要修改檔案中的external_url引數即可,

#指向需要釋出的http://gitlab.abc.com網站。

#然後重新啟動gitlab容器

sudo docker restart gitlab

、訪問頁面

#在客戶端機器上(作業系統為Win7),ip地址為192.168.3.xxx

#修改C:\windows\system32\drivers\etc\hosts檔案

#加入192.168.3.169   gitlab.abc.com

#通過網頁訪問http://gitlab.abc.com

#首次訪問需要修改管理員密碼,

#然後就可以使用root使用者和新密碼登入

、其他問題及注意事項:

7.1如果啟用了SELinuxDocker的執行命令是怎樣的?

sudo docker run --detach \

    --hostname gitlab.example.com \

    --publish 443:443 --publish 80:80 --publish 2222:22 \

    --name gitlab \

    --restart always \

    --volume /gitlab/config:/etc/gitlab:Z \

    --volume /gitlab/logs:/var/log/gitlab:Z \

    --volume /gitlab/data:/var/opt/gitlab:Z \

    gitlab/gitlab-ce:latest

否則docker程序在掛載的捲上,沒有足夠的許可權建立配置檔案。

7.2訪問頁面報50x故障怎麼辦?升級後遇到許可權問題怎麼辦?

#當訪問頁面遇到500錯誤時,可以嘗試重啟gitlab容器來解決。

sudo docker restart gitlab

#或者在升級新的Docker映象時,遇到許可權問題,

#可以嘗試執行gitlab的更新許可權命令解決:

sudo docker exec gitlab update-permissions

sudo docker restart gitlab

7.3容器已經重啟好了,為什麼不能訪問頁面?

#執行sudo docker restart gitlab命令,重啟容器

#該命令雖然立刻就能執行完了,

#但容器內部的服務還沒有完全起來,

#通過sudo docker ps檢視容器狀態,

#需要1分多的時間,健康狀況才能從starting轉換到health

#在此期間訪問網站會報502錯誤!

#待容器的狀態轉為health以後,才能正常訪問網頁

7.4疑問:啟動容器時的hostname是什麼作用?是容器的主機名?

還是對外發布的網站名稱?什麼地方會用到這個域名?

答:--hostname引數GitLab容器的主機名,不是對外發布的網站名。

7.5Gitlab容器使用了哪些埠?怎樣避免衝突?

#gitlab容器內部開放了80/22/443/8080埠,

#這些埠號也是宿主機常用的埠,不能直接80到80,22到22,這樣容易引起衝突

#如果想要將這些埠正確暴露到宿主機上,可以使用--publish引數,

#調整宿主機到容器內的埠對映,避免和宿主機上的埠衝突。

#比如 --publish 8880:80訪問主機的8880,實際會轉到容器的80

#--publish 2222:22訪問主機的2222,實際是在訪問gitlab容器的22

7.6如果編譯的方式安裝,可以使用MySQL資料庫嗎?

#強烈建議使用者使用PostgreSQL而不是MySQL

#已使用MySQL的使用者,也建議遷移到PostgreSQL

#容器的方式執行gitlab,不存在此問題。

7.7可以在Docker Toolbox下安裝GitLab嗎?

#建議使用本地化的方式安裝Docker,不要使用Docker Toolbox方式安裝。

、執行附圖:

1-建立目錄-執行容器-檢視狀態-正在啟動中

 

5-gitlab容器的狀態已正常

 

6-進入容器內部,檢視gitlab容器資訊

 

7-容器的主機名和IP地址

 

8-需要修改的網站URL

 

9-外部訪問Gitlab的網址

 

A-重啟gitlab容器以後,大約1分鐘左右,容器的狀態才從starting變為healthy

 

B-第一次訪問gitlab.abc.com網站

 

C-使用root使用者和修改後的密碼登入到gitlab

 

D-容器重啟後,如果時間未到,狀態沒有變為health,會報502錯誤

  

參考連結:

GitLab Docker images

Configuration options

使用docker部署gitlab應用

gitlab-server環境搭建

gitlab / gitlab-ce

APT/YUM repository for GitLab Community Edition packages