1、 git 服務器軟件的選型
我想在 docker 上部署一套個人實用的靶橱、安裝維護簡單寥袭、實用高效的 git 版本管理服務器系統(tǒng),比較流行且常用的 git 服務器很多关霸,比如說最常用的有: gitlab 传黄、 gitolite 、 gitea 等队寇。其中:
gitlab 比較重一些膘掰,適合企業(yè)客戶使用,但對于個人用戶英上、尤其是配置不高的云主機客戶來說炭序,主要問題還是 gitlab 鏡像大、占用系統(tǒng)資源多苍日,低配服務器容易卡頓等惭聂,不是最好的選擇;
gitolite 被認為是輕量級 git 版本管理工具相恃,但在 docker 市場里進行搜索辜纲,star 數(shù)很少,并且看朋友配置過 gitolite 拦耐,雖然已經(jīng)比較簡單了耕腾,但還是略顯啰嗦;
gitea 也是輕量級的 git 版本管理工具杀糯,在 docker 市場里看到有 172 顆星扫俺,算還不錯吧,鏡像也比較小固翰,看了 gitea 的說明(有中文網(wǎng)站)狼纬,覺得對個人用戶來說羹呵,應該是比較簡單、實用的疗琉。經(jīng)過簡單測試冈欢,發(fā)現(xiàn)確實和官網(wǎng)所說的一樣:Gitea - Git with a cup of tea,安裝配置都很簡單(喝一杯茶的功夫)盈简、效率也是沒有問題的(樹莓派上都可以安裝運行)凑耻。
2、關于gitea
Gitea 是一個開源社區(qū)驅動的 Gogs 克隆, 是一個輕量級的代碼托管解決方案柠贤,后端采用 Go 編寫香浩,采用 MIT 許可證。
中文官網(wǎng)地址:https://gitea.io/zh-cn/
中文文檔地址:https://docs.gitea.io/zh-cn/
docker 安裝文檔:https://docs.gitea.io/zh-cn/install-with-docker/
3种吸、最簡化的安裝模式
3.1弃衍、利用 docker-compose.yml 文件進行安裝
編制yml文件,該文件是從官網(wǎng)上扒下來后坚俗,做了一點簡單修改,內容如下:
version: "2"
networks:
gitea:
external: false
services:
server:
container_name: gitea_server
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- /dockers/gitea/data:/data
ports:
- "13000:3000"
- "10022:22"
depends_on:
- db
db:
container_name: gitea_db
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- /dockers/gitea/mysql:/var/lib/mysql
關于端口說明:
1)http端口
既然是最簡化的安裝岸裙,為了避免和其他站點沖突猖败,選用一個空閑的端口提供git服務器的站點服務,此處選用端口:13000降允;
2)ssh端口
由于屬主機的22端口一般由客戶端用來進行遠程管理恩闻,所以此處ssh端口選:10022
在shell里運行命令,啟動安裝:
# docker-compose up -d
在shell里運行命令:
# docker ps
可以看到新安裝的兩個容器啟動正常剧董。
為了便于顯示及截圖幢尚,給 docker ps 命令增加參數(shù),只顯示CONTAINER ID翅楼、NAMES和PORTS
# docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
其中:CONTAINER ID 和 NAMES 都可以被用來進行容器調用尉剩,后面在服務器的web配置里會用到
3.2、利用網(wǎng)站進行git服務器安裝和參數(shù)配置
3.2.1毅臊、站點訪問
在瀏覽器里輸入gitea服務器的訪問地址:http://xxx.xxx.xxx.xxx:13000理茎,其中服務器的ip或域名根據(jù)主機實際情況填寫正確,如果出現(xiàn)訪問錯誤管嬉,可能是卸載引起docker服務器狀態(tài)出現(xiàn)問題皂林,運行下面命令,重啟docker服務器蚯撩,一般可以解決問題:
# systemctl restart docker
再重新訪問網(wǎng)站础倍,出現(xiàn)下面的界面:
說明docker部署成功胎挎,下面需要進行站點配置
3.2.2沟启、站點配置
點擊首頁右上角的“注冊”或“登錄”按鈕:
由于是首次運行忆家,會彈出安裝界面
1)數(shù)據(jù)庫設置:
第 1 步:選擇 MySQL 數(shù)據(jù)庫
第 2 步:填入 MySQL 數(shù)據(jù)庫容器的名稱(container_name)
第 3 步:填入數(shù)據(jù)庫用戶密碼(此處設置密碼為:gitea,您可以根據(jù)自己需要設置)
2)一般設置:
第 4 步:填入宿主機的域名或IP地址
第 5 步:填入Gitea網(wǎng)站的訪問地址和端口
3)點擊“立即安裝”按鈕
出現(xiàn)下面的登錄界面
4)注冊管理員
由于安裝時沒有設置用戶名美浦,所以目前還沒有用戶弦赖,點擊馬上注冊,第一個注冊的用戶默認為管理員浦辨,此處選擇管理員賬戶為:root(admin被系統(tǒng)保留蹬竖,無法使用)
3.2.3、創(chuàng)建倉庫
3.3流酬、git bash 測試
3.3.1币厕、http 模式測試
1)克隆
$ cd ~
$ mkdir git
$ cd git
$ git clone http://192.168.150.128:13000/root/first.git
2)向遠程倉庫提交文件
$ cd ~/git/first
$ touch test1.txt
$ git add test1.txt
$ git commit -m 'test1'
$ git remote remove origin
$ git remote add origin http://192.168.150.128:13000/root/first.git
$ git remote -v
origin http://192.168.150.128:13000/root/first.git (fetch)
origin http://192.168.150.128:13000/root/first.git (push)
$ git push origin master
當執(zhí)行 git push 時,有時可能會出現(xiàn)錯誤芽腾,如下:
$ git push origin master
remote: invalid credentials
fatal: Authentication failed for 'http://192.168.150.128:13000/root/first.git/'
此時旦装,順序執(zhí)行下面兩個命令后,一般會解決問題:
$ git credential-manager uninstall
$ git credential-manager install
此時再執(zhí)行 git push 命令摊滔,輸入用戶名:root阴绢;密碼:123456,就可以提交成功艰躺!
如果通過了上面兩項測試--“克隆” 和 “提交”呻袭,基本可以說明 http 模式測試成功!
3.3.2腺兴、 ssh 模式測試
1)生成 ssh key
在windows下查看[c盤->用戶->自己的用戶名->.ssh]下是否有id_rsa左电、id_rsa.pub文件,如果文件存在的話页响,就可以直接進入下一步篓足,如果沒有則需要手動生成。
打開git bash闰蚕,在控制臺中輸入以下命令栈拖。
$ ssh-keygen
一路回車,即使用默認名稱陪腌、不輸入密碼辱魁,生成:id_rsa、id_rsa.pub 兩個文件
2)使用 ssh key 文件
在 gitea 網(wǎng)站的倉庫管理界面诗鸭,如下圖:
點擊“倉庫設置”染簇,進入下面界面:
點擊“管理部署密鑰”
點擊“添加部署密鑰”
把生成好的公鑰 id_rsa.pub 的內容復制到“密鑰文本”輸入框中:
點擊底部“添加部署密鑰”按鈕完成添加。
3)克隆
在 git bash 里輸入:
$ git clone ssh://git@192.168.150.128:10022/root/first.git
如果出現(xiàn)包含:Offending ECDSA key in /c/Users/MyPC.000/.ssh/known_hosts:2 的信息强岸,刪除 ~/.ssh/known_hosts 文件锻弓,重新執(zhí)行
$ git clone ssh://git@192.168.150.128:10022/root/first.git
即可!
查看 origin 的信息如下:
$ cd ~/git/first
$ git remote -v
origin ssh://git@192.168.150.128:10022/root/first.git (fetch)
origin ssh://git@192.168.150.128:10022/root/first.git (push)
4)向遠程倉庫提交文件
$ touch test2.txt
$ git add .
$ git commit -m 'test2'
$ git push origin master
查看遠程倉庫
完成提交蝌箍!