Docker 安裝Gitlab

  • 搜索相關(guān)Gitlab鏡像,以免錯(cuò)過(guò)更好的第三方鏡像

    docker search gitlab
    
  • 下載選定的Gitlab鏡像,這里我們選擇下載量最多的官方鏡像,如果未指定版本則默認(rèn)為最新版本,latest版本

    docker pull gitlab/gitlab-ce
    
  • 運(yùn)行鏡像

    docker run -d -p 80:80 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always --privileged=true gitlab/gitlab-ce
    

    容器啟動(dòng)后,會(huì)進(jìn)行大量的初始化,嘗試訪(fǎng)問(wèn)宿主機(jī)80端口,大約幾分鐘后會(huì)出現(xiàn)一個(gè)確認(rèn)初始化root用戶(hù)密碼的界面,先輸入初始化密碼,之后回到容器這邊,修改$PWD/gitlab/config/gitlab.rb文件,配置克隆地址等

    # 配置`http協(xié)議`的訪(fǎng)問(wèn)地址
    external_url 'http://192.168.1.113'
    
    # 配置ssh協(xié)議訪(fǎng)問(wèn)地址
    gitlab_rails['gitlab_ssh_host'] = '192.168.1.113'
    # 配置ssh協(xié)議訪(fǎng)問(wèn)端口,此端口是啟動(dòng)容器時(shí)宿主機(jī)22端口映射給容器的2222端口
    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    
  • 端口配置
    但在我們大多數(shù)的場(chǎng)景中可能沒(méi)有80端口可以使用了,因此我們需要將gitlab設(shè)置為其他端口如8081

    docker run -d -p 8081:80 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always gitlab/gitlab-ce
    

    容器啟動(dòng)后,嘗試訪(fǎng)問(wèn)宿主機(jī)8081端口,直到出現(xiàn)一個(gè)確認(rèn)初始化root用戶(hù)密碼的界面(確認(rèn)初始化完畢),之后修改$PWD/gitlab/config/gitlab.rb文件

    # 配置`http協(xié)議`的訪(fǎng)問(wèn)地址,端口為宿主機(jī)映射端口
    external_url 'http://192.168.1.113:8081'
    
    # 配置ssh協(xié)議訪(fǎng)問(wèn)地址
    gitlab_rails['gitlab_ssh_host'] = '192.168.1.113'
    # 配置ssh協(xié)議訪(fǎng)問(wèn)端口,此端口是啟動(dòng)容器時(shí)宿主機(jī)22端口映射給容器的2222端口
    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    

    由于gitlab將默認(rèn)的端口更改為8081后,我們需要重新生成容器

    docker stop gitlab
    docker rm gitlab
    # 修改容器內(nèi)的端口為8081
    docker run -d -p 8081:8081 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always gitlab/gitlab-ce
    
  • HTTPS支持(同時(shí)也相當(dāng)于做了一個(gè)端口轉(zhuǎn)發(fā)配置,更改了默認(rèn)端口)

    docker run -d -p 8443:443 -p 8081:80 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always gitlab/gitlab-ce
    

    容器啟動(dòng)后,嘗試訪(fǎng)問(wèn)宿主機(jī)8081端口,直到出現(xiàn)一個(gè)確認(rèn)初始化root用戶(hù)密碼的界面(確認(rèn)初始化完畢),之后修改$PWD/gitlab/config/gitlab.rb文件

    # 配置`https協(xié)議`的訪(fǎng)問(wèn)地址,端口為宿主機(jī)映射端口
    external_url 'https://192.168.1.113:8443'
    
    # 配置ssh協(xié)議訪(fǎng)問(wèn)地址
    gitlab_rails['gitlab_ssh_host'] = '192.168.1.113'
    # 配置ssh協(xié)議訪(fǎng)問(wèn)端口,此端口是啟動(dòng)容器時(shí)宿主機(jī)22端口映射給容器的2222端口
    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    
    # gitlab支持https是通過(guò)nginx實(shí)現(xiàn)的
    nginx['redirect_http_to_https'] = true
    nginx['redirect_http_to_https_port'] = 80
    nginx['listen_port'] = 443
    

    如果使用https模式git客戶(hù)端需執(zhí)行git config --global http.sslVerify false,否則克隆時(shí)會(huì)報(bào)錯(cuò)SSL certificate problem: self signed certificate

  • 用戶(hù)配置(本地下載安裝git客戶(hù)端工具)

    • HTTP協(xié)議
      目錄中右鍵,選擇Git Bash Here,執(zhí)行克隆代碼

      # gitlab項(xiàng)目中的http協(xié)議克隆地址
      git clone https://192.168.1.113:8443/money/test.git
      

    系統(tǒng)會(huì)彈出用戶(hù)名密碼的輸入框,輸入正確的用戶(hù)名密碼后,系統(tǒng)會(huì)保存憑據(jù)(控制面板 -> 憑據(jù)管理器 -> window憑據(jù))以方便后續(xù)的pull/push等操作

  • SSH協(xié)議
    目錄中右鍵,選擇Git Bash Here,生成密鑰對(duì),再通過(guò)將密鑰的公鑰與gitlab用戶(hù)綁定,即可通過(guò)生成的密鑰對(duì)中的存在于本地的私鑰與gitlab服務(wù)器建立信任的通信,這樣同一密鑰對(duì)可向多個(gè)遠(yuǎn)程代碼庫(kù)建立信任的通信,同時(shí)也不需要多余的用戶(hù)名密碼等

    # 生成密鑰對(duì),-C代表注釋內(nèi)容,我這里使用的用戶(hù)名
    ssh-keygen -t rsa -C root
    

    后面直接回車(chē),但需注意密鑰對(duì)生成的路徑,一般情況為(與系統(tǒng)使用的用戶(hù)相關(guān)):C:\Users\Administrator,進(jìn)入密鑰目錄,復(fù)制公鑰id_rsa.pub的內(nèi)容;接著進(jìn)入gitlab的web界面的用戶(hù) -> 設(shè)置 -> SSH Keys,添加復(fù)制的公鑰內(nèi)容;最后選擇Git Bash Here,執(zhí)行克隆代碼

    git clone ssh://git@192.168.1.113:2222/money/test.git
    

    會(huì)讓你確認(rèn)是否建立連接,輸入yes,在密鑰對(duì)生成的路徑中會(huì)多生成一個(gè)文件known_hosts,存儲(chǔ)無(wú)需確認(rèn)的連接信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容