Ubuntu Docker搭建GitLab以及常規配置使用


安裝啟動實例

1.首先創建一個目錄用於存放配置

sudo docker pull docker.io/gitlab/gitlab-ce
sudo mkdir -p /root/docker/gitlab/config
sudo mkdir -p /root/docker/gitlab/logs
sudo mkdir -p /root/docker/gitlab/data

2.運行實例(關於最新版本的https 沒有搞定,晚上說的都是舊版本, 嘗試了一下 舊版本也是無果的,還有官方的新版有很多監控)

docker run -d --hostname 192.168.100.5  -p 2222:22  -p 8080:80  -p 8443:443   -v /root/docker/gitlab/config:/etc/gitlab   -v /root/docker/gitlab/logs:/var/log/gitlab   -v /root/docker/gitlab/data:/var/opt/gitlab   --restart always  --name gitlab  gitlab/gitlab-ce:latest
# --hostname 指定容器域名,未知功能:創建鏡像倉庫的時候使用到
# 將容器內443端口映射到主機8443,提供https服務
# 將容器內80端口映射到主機8080,提供http服務
# 將容器內22端口映射到主機2222,提供ssh服務

查看Gitlab容器運行情況

docker inspect gitlab --format "{{.State.Status}}"

4..初次使用gitlab時需要創建默認管理員密碼,至少8位,這里輸入“12345678”。 

我們在登錄那里使用root作為用戶名,然后用剛剛設置的密碼,就可以以管理員身份登錄Gitlab。 

創建並拉取項目

我們來創建一個項目(public 不需要login的),然后簡單測試一下,如果用戶是windows建議可以考慮安裝GitTortoiseGit圖形界面操作。

 

上面我們這個項目是public, 現在修改為internal(需要用戶密碼)

然后修改tortoisegit設置

最后如圖:

目前還有個遺留問題,就是external_url 的配置(現在在gitlab上的http克隆地址是http://192.168.100.5/root/webapi.git,是沒有8080端口,是我自己手動添加的),網上找了很多方法都沒有搞定。

后來我重新准備一個新的ubuntu虛擬機,就用默認的端口:

docker run -d --hostname 192.168.100.16 -p 2222:22 -p 80:80 -p 443:443 -v /root/docker/gitlab/config:/etc/gitlab -v /root/docker/gitlab/logs:/var/log/gitlab -v /root/docker/gitlab/data:/var/opt/gitlab --restart always --name gitlab gitlab/gitlab-ce:latest

結果一切都好了


Push項目

在使用git推送代碼到遠程的gitlab庫時拋出,You are not allowed to push code to this project“的錯誤信息。詳細信息如下:

點擊gitlab的“Settings”> “Repository”,在打開的界面選擇 “Protected Branches”項的“Expand”按鈕。如下圖

在打開的界面可以看見master分支是在受保護的,我們只需要點擊“unprotect”按鈕,將master分支從受保護中移除。如下圖:

4.如果還沒有解決的話,還請檢查一下用戶權限:

SSH配置:

由於端口我這里改為2222,所以需要修改gitlab.rb配置 然后重啟docker(docker container restart gitlab)

gitlab_rails['gitlab_shell_ssh_port'] = 2222
#ssh訪問地址需要添加端口號 變為 git clone ssh://git@192.168.100.16:2222/root/webapi.git

現在我們來創建ssh  key

git config --global user.name "gavin"
git config --global user.email "gavinzhangsan@outlook.com"
ssh-keygen -t rsa -C "gavinzhangsan@outlook.com" #后面直接回車 回車就可以了

在git lab刪添加key

https配置:

sudo mkdir -p /root/docker/gitlab/config/ssl
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=FR/ST=Charente/L=Mornac/O=Office/CN=gitlab.domain.com" -keyout /root/docker/gitlab/config/ssl/gitlab.domain.com.key -out /root/docker/gitlab/config/ssl/gitlab.domain.com.crt
#生成證書到/root/docker/gitlab/config/ssl目錄

修改gitlab.rb配置:

external_url 'https://gitlab.domain.com'
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.domain.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.domain.com.key"
nginx['listen_port'] = 443
nginx['proxy_set_headers'] = {
 "Host" => "$http_host_with_default",
 "X-Real-IP" => "$remote_addr",
 "X-Forwarded-For" => "$proxy_add_x_forwarded_for",
 "X-Forwarded-Proto" => "https",
 "X-Forwarded-Ssl" => "on",
 "Upgrade" => "$http_upgrade",
 "Connection" => "$connection_upgrade"
}

在host文件中增加配置:

192.168.100.16 gitlab.domain.com

現在應用新的配置, 然后重啟docker

 

 

-----以下是網上找的一點資料 看上去比較靠譜 但實際沒有解決問題-----

首先,備份默認gitlab.rb和gitlab.yml

cd /root/docker/gitlab/config
cp gitlab.rb gitlab.rb.default

按上面的方式,gitlab容器運行沒問題,但在gitlab上創建項目的時候,生成項目的URL訪問地址是按容器的hostname來生成的,也就是容器的id。作為gitlab服務器,我們需要一個固定的URL訪問地址(實際上我搞了很久也沒有搞定external_url , 也就是http訪問, 最后實在不行就用ssh協議吧),修改/root/docker/gitlab/config/gitlab.rb

# 配置http協議所使用的訪問地址
external_url 'http://192.168.100.5' #nginx['listen_addresses'] = ['*', '[::]'] #nginx['listen_port'] = 8080 # 配置ssh協議所使用的訪問地址和端口 #gitlab_rails['gitlab_ssh_host'] = '192.168.100.5' #gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 此端口是run時22端口映射的2222端口

然后重啟容器:

docker exec -t gitlab gitlab-ctl reconfigure
docker exec -t gitlab gitlab-ctl restart

參考:

docker安裝配置gitlab詳細過程

通過docker安裝Gitlab

Use Docker-Compose to Run Gitlab via Https With Self-signed CA

正確使用 Docker 搭建 GitLab 只要半分鍾

Centos7:Docker安裝Gitlab

使用docker-compose搭建gitlab


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM