Docker系列——利用gogs搭建屬於自己的git服務
阿新 • • 發佈:2020-09-30
# gogs簡介
Gogs的目標是打造一個最簡單、最快速和最輕鬆的方式搭建自助Git服務。使用Go語言開發使得Gogs能夠通過獨立的二進位制分發,並且支援Go語言支援的所有平臺,包括 Linux、Mac OS X、Windows 以及 ARM 平臺。
## 功能特性
- 支援活動時間線
- 支援 SSH 以及 HTTP/HTTPS 協議
- 支援 SMTP、LDAP 和反向代理的使用者認證
- 支援反向代理子路徑
- 支援使用者、組織和倉庫管理系統
- 支援新增和刪除倉庫協作者
- 支援倉庫和組織級別 Web 鉤子(包括 Slack 整合)
- 支援倉庫 Git 鉤子和部署金鑰
- 支援倉庫工單(Issue)、合併請求(Pull Request)、Wiki 以及保護分支
- 支援遷移和映象倉庫以及它的 Wiki
- 支援線上編輯倉庫檔案和 Wiki
- 支援自定義源的 Gravatar 和 Federated Avatar
- 支援 Jupyter Notebook
- 支援郵件服務
- 支援後臺管理面板
- 支援 MySQL、PostgreSQL、SQLite3、MSSQL 和 TiDB(實驗性支援) 資料庫
- 支援多語言本地化(22 種語言)
# 部署環境
## 拉取映象
通過docker命令拉取gogs映象
使用命令操作如下:
> docker pull gogs/gogs
命令列操作如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200923175237763-212070323.png)
## 新建gogs目錄
在/home/software下新建資料夾gogs
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200923175333679-35447870.png)
* 進入/home/software路徑下新建,命令如下:
> mkdir gogs
* 在根目錄下直接新建,命令如下:
> mkdir home/software/gogs
* 建立多級目錄,命令如下:
> mkdir -p software/gogs
## 開放伺服器埠
配置埠在伺服器的安全組中進行配置,開放的埠,用於gogs/docker服務埠進行對映。
## 啟動服務
啟動服務命令如下:
> docker run --name=gogs -p 8234:22 -p 8235:3000 -v /home/software/gogs:/data gogs/gogs
引數說明:
* -p: 埠對映,將容器的22埠對映到宿主機的1006埠,將容器的3000埠對映到宿主機的1007埠
* -name: 指定容器名稱
* -net: 將容器加入backend網路,目的是為了能夠連線backend網路中的mysql資料庫
* -v: 資料卷掛載, 用於將容器和資料分離
啟動操作如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200923175400311-557724600.png)
## 安裝配置
通過地址訪問,格式為:http://伺服器ip+對映埠/install,
如:http://101.111.22.31:8235/install,
訪問進入如下頁面,進行配置資料:
1. 配置資料庫
資料庫型別選擇為SQLite3,免配置,直接使用。
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200923175440904-1517304354.png)
2. 基本資訊配置
基本資訊中,配置資訊如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200923175454690-758451546.png)
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200923180044012-1899461049.png)
- 應用名稱:支援自定義,可維護成自己的專屬名稱
- 倉庫根目錄:預設即可
- 執行系統使用者:也預設即可
- 域名:伺服器的公網地址,如:http://101.111.22.31
- SSH埠號:伺服器的對映埠,如:8234
- HTTP埠:監聽埠預設為3000
- 應用URL:公網地址+對映埠,如:http://101.111.22.31:8235
- 日誌路徑:預設即可
3. 可選配置
可選配置,看個人所需,其他暫時不配置,配置管理員賬號即可。
# gogs使用
配置完成後,訪問地址,進入到登入頁,如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200925170726936-371018642.png)
## 註冊&登入
在之前配置基礎資訊時,沒配置管理員賬號的話,在登入頁,註冊個賬號便可以登入;如果有配置管理員賬號,使用配置的賬號直接登入即可。註冊頁面如下:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200925170908271-74012933.png)
## 控制面板
控制面板介面如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200925175600999-799240120.png)
- 左側:個人的操作記錄,比如:提交程式碼,建立合併請求,請求關閉...
- 右側:我的倉庫:屬於自己的倉庫,擁有管理許可權
- 右側:參與協作的倉庫:參與的倉庫,沒有所有權,許可權按倉庫所屬人進行分配
## 倉庫管理
倉庫管理介面如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200925180022782-16795481.png)
在該頁面,可以操作如下設定:
- 基本設定,可配置倉庫名稱、可見性等
- 管理協作者,新增倉庫的協作者,一起維護倉庫內容
- 管理分支,配置預設分支和保護分支
- 管理Web鉤子,Gogs上發生指定事件時對指定 URL 傳送 POST 通知
- 管理Git鉤子
- 管理部署金鑰
- 轉移倉庫所有權
## 工單管理
工單管理介面如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200925180714406-1227710315.png)
在該頁面,可以檢視自己的以及指派給自己的工單,也可以檢視工單狀態,便捷管理。
## 合併請求
合併請求介面如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200925180911248-1799155556.png)
在該頁面,可以檢視合併請求的狀態。
## 建立倉庫
建立倉庫介面如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200925181232433-1685863794.png)
點選面板中的+號,選擇建立倉庫,即可進入到該頁面。具體建立自己操作一波就可以了,很簡單。
## 程式碼操作
- 克隆程式碼
使用如下命令操作:
> git clone http://101.111.22.31:8235/yihuqingjiu/Auto_Test.git
截圖如下:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200930170942749-620816585.png)
- 提交程式碼
提交程式碼的操作,可以祥見這篇博文:[Git基本操作命令合集](https://www.cnblogs.com/hong-fithing/p/12938287.html),這裡就不贅述了。提交程式碼後,可以在面板中檢視,如下所示:
![](https://img2020.cnblogs.com/blog/1242227/202009/1242227-20200930171528695-396940421.png)
# 問題總結
1. 配置gogs基礎資訊時,想使用本地的Mysql資料庫,但一直提示許可權錯誤,沒能解決,最終還是使用了免配置的sqlite3。
2. 想使用ssh方式拉取程式碼,在伺服器端,生成的公鑰,一直提示失敗,也沒能解決,報錯提示資訊:invalid key format: illegal base64 data at input byte 171。
以上就是今天分享的內容,如有博友遇到如上2個問題,望告知一二,祝大家雙節