一、前言
Git是目前優秀和流行的源代碼管理工具。而GitHub是一個面向開源及私有軟件項目的托管雲平台,但開源免費,私有收費。而公司出於商業化等目的需要搭建自己的源代碼托管服務器。通過網上了解Gogs是一款不錯git管理系統,而且是國內開源項目,今天我們就使用Gogs基於阿里雲Linux CentOS 7 Docker部署搭建自己的git服務器。
Gogs介紹(官網):https://gogs.io/
參考官方部署:https://github.com/gogs/gogs/tree/master/docker
二、步驟
1、 購買一個阿里雲服務器,系統選擇Linux CentOS 7
2、 docker安裝
yum install docker
docker -v
安裝完畢后使用 docker -v 查看下版本號
3、 啟動docker
systemctl start docker
4、 安裝gogs
docker pull gogs/gogs
使用docker pull gogs/gogs 把鏡像下載下來
5、 創建存儲代碼的倉庫和配置文件所在的位置
mkdir -p /var/gogs
6、 使用docker 命令啟動gogs
docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
其中10022映射的是docker中的22端口 10080映射的是http的3000端口,這個在我們啟動的時候會使用到該配置,首次執行完成退出后需要重啟
7、 啟動gogs
docker start gogs
docker ps
docker ps查看啟動狀態
8、 訪問gogs,訪問鏈接是ip+端口進行配置(注:阿里雲需要在安全組規則配置入站規則,即服務器端口10080, ssh端口10022)
注:HTTP端口號是指Gogs在Docker容器中偵聽的端口,這里任然設置為3000,其它注意事項如下:
大多數設置都很明顯並且易於理解,但是通過在Docker內部運行Gogs,有些設置可能會令人困惑:
- 存儲庫根路徑:將其保留為默認值,/home/git/gogs-repositories因為start.sh已經為您建立了符號鏈接。
- 運行用戶:將其保留為默認值,git因為finalize.sh已經使用名稱設置了用戶git。
- 域:填寫Docker容器IP(例如192.168.99.100)。但是,如果要從其他物理機訪問Gogs實例,請填寫Docker主機的主機名或IP地址。
- SSH端口:使用Docker容器中公開的端口。例如,您的SSH服務器22在Docker內部監聽,但是您通過公開了它10022:22,然后將其10022用於此值。不建議在Docker Container中使用內置SSH服務器
- HTTP端口:使用您希望Gogs在Docker容器中偵聽的端口。例如,您的Gogs 3000在Docker內部進行偵聽,並通過公開了它10080:3000,但您仍使用3000該值。
- 應用程序URL:使用域和公開的HTTP端口值(例如http://192.168.99.100:10080/)的組合。
更多詳細見官方文檔說明:https://github.com/gogs/gogs/tree/master/docker
9、配置后運行
訪問成功
10、 創建倉庫測試
服務器搭建成功,創建了一個私有 和 公開的倉庫
11、Centos7.2重啟后用docker start gogs異常
如遇到類似問題請查看:https://discuss.gogs.io/t/centos7-2-docker-start-gogs/483
三、參考資源
阿里雲圖文教程(本次搭建參考此教程):
https://www.aliyun.com/jiaocheng/120285.html?spm=5176.100033.0.0.jZ1hRY
阿里雲教程使用MySQL:
https://www.aliyun.com/jiaocheng/125112.html?spm=5176.100033.0.0.jZ1hRY
git使用教程:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Gogs使用文檔: