前言
GitHub已經(jīng)成為首選的代碼托管平臺,因為它又很多很棒的功能舀凛,操作簡單,幾乎所有的開發(fā)者都喜歡它。但如果你正在寫一個Project, 不想讓別人看到你的代碼, 該怎么辦呢壁查?
Github上可以購買私人的倉庫, 但是對于我們學(xué)生黨來說,是不會也沒有必要花這個錢的, 我們完全可以自己動手創(chuàng)建一個git私人服務(wù)器剔应。Gitlab 和 Gogs 這兩個都是非常棒的,功能上都跟github差不多.Gogs使用 Go 語言開發(fā)能夠通過獨立的二進制分發(fā)睡腿,并且支持 Go 語言支持的 所有平臺,包括 Linux峻贮、Mac OS X席怪、Windows 以及 ARM 平臺。Gogs占用資源少,更加的輕量化,界面也比較美觀
纤控。
特性 | Gogs | Gitlab | Github |
---|---|---|---|
Dashboard & File Browser | Y | Y | Y |
Issue Tracking, Milestones & Commit keywords | Y | Y | Y |
Organizations support | N | Y | Y |
Wiki | N | Y | Y |
Code Review | N | Y | Y |
Code Snippets | N | Y | Y |
Web Hooks | Y | Y | Y |
Git Hooks | Y | * Enterprise | * Enterprise |
LDAP Login | Y | Y | Y |
LDAP Group Sync | N | * Enterprise | * Enterprise |
Branded Login Page | N | * Enterprise | * Enterprise |
Language | Go | Ruby | Ruby |
Platform | Cross-Platform | Linux | * Virtual Machine |
License | MIT | MIT | Proprietary |
Resource Usage | Low | Medium/High | Medium/High |
安裝步驟
- 新建 git 用戶
- 創(chuàng)建Volume卷映射路徑
- 創(chuàng)建 gogs數(shù)據(jù)庫
- 構(gòu)建Gogs 容器
- 配置web
- (可選) nginx反向代理配置
注意, Gogs運行需要MySQL服務(wù)器或者SQLite數(shù)據(jù)庫; 如果沒有可以翻看我這之前的博客 Docker部署(二):MySQL數(shù)據(jù)庫 or 自行安裝.
新建用戶
Gogs默認(rèn)以git用戶運行, 雖然我們用的 Docker 但是為了與Gogs保持一致,這一步操作很重要,具體我會在后面的的文章會講解.
$ su adduser git
git 用戶創(chuàng)建完成后,可以用su git
登錄,使用'cd ~'切換到用戶目錄.
創(chuàng)建Volume卷映射路徑
就在當(dāng)前 git 用戶的目錄下面新建一個 gogs
目錄來映射Volume保存gogs的所有數(shù)據(jù).
$ mkdir ~/gogs
創(chuàng)建gogs數(shù)據(jù)庫
在構(gòu)建Gogs容器前,讓我們做完最后一個準(zhǔn)備步驟,就是創(chuàng)建Gogs容器依賴的數(shù)據(jù)庫gogs
然后創(chuàng)建一個新用戶gogs,并將gogs
數(shù)據(jù)庫的所有權(quán)限都賦予該用戶.
現(xiàn)在我們還以git
用戶的身份登錄著,我們現(xiàn)在要退出git 用戶并切換到 root.
$ exit
$ su docker exec -it mysql mysql -u root -p
> # 輸入密碼
> create database gogs;
> create user 'gogs'@'localhost' identified by '密碼';
> grant all privileges on gogs.* to 'gogs'@'localhost';
> flush privileges;
> exit;
構(gòu)建Gogs 容器
在 root
下執(zhí)行Gogs的容器構(gòu)建.
$ docker run --name=gogs -d -v ~git/gogs:/data -p 10022:22 -p 3000:3000 --link=mysql:db gogs/gogs
--link
屬性: 容器互聯(lián). 比如: --link=mysql:<font color='red'>db</font>, 連接 Docker部署(二):MySQL數(shù)據(jù)庫 這篇博客中創(chuàng)建的name=mysql 的MySQL容器, 標(biāo)記紅色的 db 相當(dāng)于在Gogs容器中的/etc/hosts文件中增加一個額外的name主機名挂捻,這個名字為mysql的容器的IP地址的別名。這使得容器的內(nèi)部進程可以訪問主機名為mysql的容器而不用知道它的ip.
配置web
打開Chrome輸入http://ip:3000
就能看到gogs的各項配置了.
數(shù)據(jù)庫類型: MySQL
數(shù)據(jù)庫主機: db:3306
數(shù)據(jù)庫用戶: gogs
...
域名: ip或者域名
ssh端口: 10022
ssh端口這個可以查看構(gòu)建命令中的-p, 或者在構(gòu)建的時候指定你自己的端口即可,*** 但是不能為22 端口*** 原因不用我說都應(yīng)該知道.
HTTP 端口號: 3000
應(yīng)用URL: http://ip:3000/
可選配置中,你可以根據(jù)自己的需要設(shè)置既可.
然后點立即安裝就大功告成了.