1.首先建立一個目錄用於存放配置html
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 沒有搞定,晚上說的都是舊版本, 嘗試了一下 舊版本也是無果的,還有官方的新版有不少監控)node
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容器運行狀況nginx
docker inspect gitlab --format "{{.State.Status}}"
4..初次使用gitlab時須要建立默認管理員密碼,至少8位,這裏輸入「12345678」。 git
咱們在登陸那裏使用root做爲用戶名,而後用剛剛設置的密碼,就能夠以管理員身份登陸Gitlab。 github
咱們來建立一個項目(public 不須要login的),而後簡單測試一下,若是用戶是windows建議能夠考慮安裝Git和TortoiseGit圖形界面操做。web
上面咱們這個項目是public, 如今修改成internal(須要用戶密碼)docker
而後修改tortoisegit設置:shell
最後如圖:ubuntu
目前還有個遺留問題,就是external_url 的配置(如今在gitlab上的http克隆地址是http://192.168.100.5/root/webapi.git,是沒有8080端口,是我本身手動添加的),網上找了不少方法都沒有搞定。windows
後來我從新準備一個新的ubuntu虛擬機,就用默認的端口:
結果一切都好了
在使用git推送代碼到遠程的gitlab庫時拋出,You are not allowed to push code to this project「的錯誤信息。詳細信息以下:
點擊gitlab的「Settings」> 「Repository」,在打開的界面選擇 「Protected Branches」項的「Expand」按鈕。以下圖
在打開的界面能夠看見master分支是在受保護的,咱們只須要點擊「unprotect」按鈕,將master分支從受保護中移除。以下圖:
4.若是尚未解決的話,還請檢查一下用戶權限:
因爲端口我這裏改成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
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
參考:
Use Docker-Compose to Run Gitlab via Https With Self-signed CA