基於Docker部署Gitlab教程

什麼是 GitLab

GitLab 是利用 Ruby on Rails 一個開源的版本管理系統,實現一個自託管的 Git 項目倉庫,可通過 Web 界面進行訪問公開的或者私人項目。它擁有與 Github 類似的功能,能夠瀏覽源代碼,管理缺陷和註釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序 (Wall) 進行交流。它還提供一個代碼片段收集功能可以輕鬆實現代碼複用,便於日後有需要的時候進行查找。

基於 Docker 安裝 GitLab

首先進入到/usr/local/docker/gitlab目錄下(若沒有則創建),創建docker-compose.yml配置文件。

cd /usr/local/docker/gitlab
vi docker-compose.yml

使用 Docker 來安裝和運行 GitLab 中文版,docker-compose.yml 配置如下:

version: '2'
services:
    gitlab:
      image: 'twang2218/gitlab-ce-zh:11.1.4'
      restart: always
      hostname: '192.168.41.131'  #你的linux虛擬機的IP地址
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://192.168.41.131'
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
      ports:
        - '80:80'
        - '8443:443'
        - '2222:22'
      volumes:
        - /usr/local/docker/gitlab/config:/etc/gitlab
        - /usr/local/docker/gitlab/data:/var/opt/gitlab
        - /usr/local/docker/gitlab/logs:/var/log/gitlab

使用docker-compose up命令啓動部署。

部署完成後,在瀏覽器輸入192.168.41.131即可訪問Gitlab。

關於配置多個SSH的問題

由於我本身還在使用Github,所以我的電腦上配置了一個Github SSH的Key,而現在我又搭建了一個本地託管服務器,並且希望通過SSH免密登陸,所以我需要配置第二個SSH,這裏經常會出現衝突問題,有兩種解決辦法。

方法一

首先,生成第二個Gitlab使用的SSH公鑰與私鑰。

$ ssh-keygen -t rsa -C "[email protected]” -f ~/.ssh/id_gitlab_rsa

此時,你的.ssh文件夾中應該有id_gitlab_rsa``id_gitlab_rsa.pub``id_github_rsa``id_gitlab_hub.pub四個文件,分別對應兩個平臺的公鑰與私鑰。

添加配置文件config如下:

# gitlab
Host 192.168.41.131 #Host可以看作是一個你要識別的模式,對識別的模式,進行配置對應的的主機名和ssh文件(可以直接填寫ip地址)
    HostName 192.168.41.131  #本地Gitlab服務器IP
    Port 2222  #Gitlab端口號
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gitlab #指明上面User對應的identityFile路徑
    User GiottoLee #登錄名(如gitlab的username)
# github
Host github
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github

然後,添加私鑰:

$ ssh-add ~/.ssh/id_rsa $ ssh-add ~/.ssh/github_rsa

如果執行ssh-add時提示”Could not open a connection to your authentication agent”,可以先執行命令:

$ ssh-agent bash

然後再重新運行ssh-add命令即可。

最後通過SSH -T命令進行測試:

$ ssh -T [email protected]
Hi GiottoLee! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T [email protected]
Welcome to GitLab, @GiottoLee!

測試通過,現在兩個SSH可同時使用了。

方法二

這個方法是我在搞清楚方法一之後才發現的,一句話就可以說清楚:

直接把github的公鑰複製給Gitlab就好了,用一把鑰匙訪問兩個倉庫!Shit!

具體操作

Gitlab的具體操作與Github操作相同,此處不再贅述,如有需要可以翻看之前的那篇文章Git版本控制及遠程倉庫的使用]。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章