以容器的方式執行GitLab
以容器的方式執行GitLab
目錄:
一、環境及實驗目標
二、軟硬體需求:
三、準備資料目錄
四、執行容器
五、配置GitLab
六、訪問頁面
七、其他注意事項
八、執行附圖
一、環境及實驗目標
實驗目標:在一臺虛擬機器上,準備好Docker環境,使用容器的方式執行gitlab映象,搭建一臺內部私有的gitlab伺服器,要能通過http://gitlab.abc.com域名訪問。
機器名:gitlab9
IP地址:192.168.3.169
訪問網址:http://gitlab.abc.com
二、軟硬體需求:
CPU :最少1核,也能跑,慢!建議2核以上;
記憶體:最少4GB(1GB Ram+3GB Swap
儲存:根據各自需要而定,最少5-10GB以上可用空間,建議使用SSD;
軟體:Ubuntu 16.04.03+Docker 1.12.3(我用的是這個版本)
不滿足以上配置,在使用中要麼會比較慢,要麼會報500錯誤。
建議:2核4GB,20GB+空間,可滿足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容器
#--hostname為GitLab容器的主機名,不是對外發布的網站名。
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
#注:使用Xshell的ssh遠端登入到宿主機,
#再執行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如果啟用了SELinux,Docker的執行命令是怎樣的?:
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