Docker架設Git服務器簡記

本來是想直接在centos上面安裝架設,還是考慮到複用問題,因爲我的日常工作是java開發,不會花很多時間來專門維護Git服務器,再則如果上門服務都直接在一個服務器上面配置,總會有一些影響的。還是隔離開比較好,所以選擇使用docker鏡像來架設。

架設過程中自然要踩很多坑的,有一些關鍵的地方網上的資料也不是很詳細,鼓搗了半個工作日,還好把架設的任務完成了。

首先,拉取gitlab鏡像,網上資料拉取鏡像都是在一個地方,這倒是好事。

docker pull gitlab/gitlab-ce

拉取下來是latest版本,也就是最新的,完整的鏡像庫名稱是docker.io/gitlab/gitlab-ce:latest

在宿主機創建幾個文件夾,我習慣把自己用的文件夾創建在home

cd /home

mkdir gitlab

cd gitlab

mkdir config

mkdir logs

mkdir data

接下來開始運行。不過在運行之前,我要跳過一個坑,就是把宿主機的22端口讓出來,22端口是宿主機ssh端口,但是因爲gitlab也需要,目前沒有找到辦法處理,只好去改宿主機了。還有,有的資料提示把容器的80端口映射到宿主機的80端口上,這樣配置到簡單,使用也方便,但是我的服務器還要配置一些nginx路由、負載均衡什麼的,總是覺得這個gitlab也太霸道了。但是因爲一直不成功,所以只好關掉nginx,把80端口映射出來,結果還真成功了。不過我不服氣,刪掉容器重新跑了一遍,就是不映射80端口,也成功了。

現在該宿主機的22端口。

vi /etc/ssh/sshd_config

找到# Port 去掉註釋,改成Port 1022,以後宿主機的遠程ssh登錄就用1022端口了。

重啓sshd

systemctl restart sshd

運行以下命令提供對外服務

semanage port -a -t ssh_port_t -p tcp 1022

以上內容來自https://www.jianshu.com/p/8d8e6b45a514?from=timeline&isappinstalled=0

我在這裏踩過一個坑,不過很快解決了。我運行以上命令,並不成功,而是出現提示:

Traceback (most recent call last):
  File "/usr/sbin/semanage", line 32, in <module>
    import seobject
ModuleNotFoundError: No module named 'seobject'
提示缺少seobject這個模塊,還好我記起來了,我在服務器上面安裝過python3,之後經常出現這種問題,需要下載模塊並且重新編譯python3.因爲centos很多原生的命令使用python2來編寫的。不過提示已經說得很明白了,打開/usr/sbin/semanage文件,把第一行裏面最後的python改爲python2就好了。因爲我安裝python3之後,就把python連接到python3,原來的pyth就是python2了,所以很多處要修改。說到這裏我倒是要反省這種做法的必要性了,我其實不會在服務器上面做python開發的,安裝python3真的沒有必要。

我們還需要讓防火牆放行1022端口,我的防火牆直接關閉了,所以不需要這一步。

配置好了,可以用下面的命令重新登錄服務器:

ssh [email protected] 1022

也可以不用現在就重新登錄。

現在來開始運行:

docker run --name gitlab --hostname gitlabserver -p 443:443 -p 10086:10086 -p 22:22 -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab -d docker.io/gitlab/gitlab-ce:latest

443端口怎麼處理還沒有嘗試,心理還是不想映射的。這個以後再去嘗試。這個10086端口就是我們頁面需要的端口,我們會進入容器做一個設置,容器會把數據發送到10086端口,我們也可以用宿主機的10086端口訪問。目前這是最合適的辦法,拋開80端口不用,就是用一個自定義的端口,內外一致。

進入容器

docker exec -it gitlab bash

打開配置文件

vi /etc/gitlab/gitlab.rb

修改:

external_url "http://192.168.1.101:10086"

192.168.1.101是我宿主機服務器的內網ip,這樣設置以後,容器gitlab也會把數據端口調整爲10086,我們就要直接用這地址訪問。至於內外端口是不是必須要一致,還需要嘗試。

設置完退出,執行命令使配置生效。

gitlab-ctl reconfigure

這條命令執行時間很長,有點耐心。我就是因爲沒耐心,以爲是前臺執行,所以就去看頁面,頁面總是提示拒絕連接,所以我就認爲架設失敗了,反覆去修改,很多次把對的也改錯了,可能還有些不必要的改動。這應該是我這次架設過程中踩過的最大一坑了。

打印了好多日誌,等到命令執行完畢,回到正常狀態,這時候在本地計算機瀏覽器輸入

http://192.168.1.101:10086

你就會看到一個初次進入要求修改默認密碼的彈框,用戶名是root,把密碼修改掉,就可以登錄進入了。

這是登陸界面:

進去之後是創建組、用戶、項目的界面,可惜現在找不到了,我已經創建了一個組,一個用戶和一個項目。具體設置不做贅述,架設已完成。

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