實(shí)用小帖:利用Gitlab備份代碼倉(cāng)庫(kù)亲桦,以及鏡像同步

最近一直跟幾個(gè)小伙伴在討論敏捷項(xiàng)目及其在具體團(tuán)隊(duì)中演進(jìn)的許多問題。我想敏捷是一個(gè)從技術(shù)到項(xiàng)目管理等多個(gè)層次的立體問題浊仆。理念上的東西需要反復(fù)地思想碰撞和實(shí)踐客峭,進(jìn)而去總結(jié)。而技術(shù)層面則卻可以陸續(xù)擴(kuò)展抡柿,對(duì)于二三線城市舔琅,特別是一些小團(tuán)隊(duì),技術(shù)能力和使用工具都有脫離當(dāng)下發(fā)展的情況洲劣,其原因并非是團(tuán)隊(duì)人員惰怠搏明,而是沒有良好的入門引導(dǎo)鼠锈。所以我在自己的博客中開設(shè)“實(shí)用小帖”一欄,目的是輔助大家尋找并入門一些好的技術(shù)工具星著。當(dāng)然购笆,任何技術(shù)都可能會(huì)過時(shí),這也是我的博客中很少講解技術(shù)代碼的原因虚循。不過“實(shí)用小帖”旨在拋磚引玉同欠,希望通過更為廣泛的交流來讓敏捷落地在中小開發(fā)團(tuán)隊(duì)中。畢竟横缔,在小一點(diǎn)的團(tuán)隊(duì)铺遂,往往技術(shù)負(fù)責(zé)人是既當(dāng)“爹”(PM)又當(dāng)“媽”(Coder),卻為不易茎刚。

0. 準(zhǔn)備工作

Gitlab在部署的時(shí)候會(huì)占用三個(gè)端口80,443和22襟锐,分別是web訪問和ssh協(xié)議。所以在部署的時(shí)候就要把服務(wù)器上的這三個(gè)端口讓出來膛锭,當(dāng)然也可以通過修改配置文件將三個(gè)端口修改為其他端口粮坞。不過不建議修改22端口,因?yàn)橐坏┬薷脑摱丝诔跽许?xiàng)目開發(fā)人員就需要本地配置git莫杈,雖然簡(jiǎn)單,但由于開發(fā)人員可能對(duì)git使用能力參差不齊而產(chǎn)生不必要的麻煩奢入,所以并不建議修改22端口筝闹。
但是Linux系統(tǒng)往往自帶ssh server, 所以需要修改它的默認(rèn)端口,既

vim /etc/ssh/sshd_config

修改端口號(hào)


sshd_config修改端口號(hào)

如此腥光,以后再使用ssh連接服務(wù)器的時(shí)候关顷,就需要使用命令:

ssh -p <port_number> <username>@<server_ip>

下一步,安裝docker武福。對(duì)于小團(tuán)隊(duì)的各種管理事務(wù)解寝,代碼管理,倉(cāng)庫(kù)管理艘儒,持續(xù)集成聋伦,數(shù)據(jù)庫(kù)管理,數(shù)據(jù)遷移備份以及部署實(shí)施docker絕對(duì)是一站式解決方案界睁。

1. docker安裝Gitlab

其實(shí)很多開發(fā)常用的代碼管理工具只有svn和git觉增,但實(shí)際上還有很多其他產(chǎn)品,不過目前功能和文檔最為完善估計(jì)只有g(shù)itlab了翻斟。使用docker安裝Gitlab十分方便逾礁,首先下載鏡像

docker pull gitlab/gitlab-ce:latest

gitlab-ce是社區(qū)免費(fèi)版本,gitlab-ee是企業(yè)收費(fèi)版本,在功能上也有所區(qū)別嘹履。
接下來創(chuàng)建并運(yùn)行一個(gè)Gitlab容器(注意配置docker的用戶組, 避免使用sudo命令)

sudo docker run --detach \
  --hostname <server_ip_or_address> \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://<server_ip_or_address>/' " \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume /data/gitlab/config:/etc/gitlab \
  --volume /data/gitlab/logs:/var/log/gitlab \
  --volume /data/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

參數(shù)說明:
--detach 保持容器后臺(tái)持續(xù)運(yùn)行
--hostname 設(shè)置gitlab的hostname
--env 當(dāng)中的external_url保證倉(cāng)庫(kù)克隆連接的hostname顯示正確
--publish 主機(jī)與容器的端口映射
--name 設(shè)置容器名稱
--restart always 設(shè)置容器與docker service同步啟動(dòng)
--volume 將主機(jī)磁盤掛載到容器腻扇,這個(gè)很重要,因?yàn)榧词挂院笠瞥撊萜骼担覀兺瑯涌梢詫⑦@些數(shù)據(jù)掛載到其他容器上

2. Gitlab同步原代碼倉(cāng)庫(kù)

完成上述過程幼苛,配置gitlab的root賬號(hào)以及注冊(cè)開發(fā)人員賬號(hào)之后,即可以同步代碼倉(cāng)庫(kù)焕刮,這里很簡(jiǎn)單舶沿。


第一步 創(chuàng)建倉(cāng)庫(kù)

第二部 選擇Import Project

第三步 選擇對(duì)應(yīng)原倉(cāng)庫(kù)并填寫登錄口令

最后點(diǎn)Create就可以了

*3. 設(shè)置鏡像倉(cāng)庫(kù)

有時(shí)候,這種備份是臨時(shí)解決問題配并,所以需要更為穩(wěn)固的倉(cāng)庫(kù)進(jìn)行鏡像同步括荡,設(shè)置鏡像的辦法也很簡(jiǎn)單


第一步 選擇倉(cāng)庫(kù)設(shè)置

第二步 設(shè)置鏡像倉(cāng)庫(kù)

這里注意,Gitlab的CE版只能做Push鏡像溉旋,而EE則支持Push和Pull鏡像兩種畸冲,所以依據(jù)仔細(xì)需求選擇,當(dāng)然也有其他工具能夠解決CE的Pull鏡像問題观腊,不過相對(duì)比較累贅邑闲。實(shí)際上多采用ruby腳本寫的runner來達(dá)到效果。
在輸入鏡像倉(cāng)庫(kù)地址時(shí)恕沫,可以把鏡像倉(cāng)庫(kù)的用戶名寫入url监憎,格式為

http://<username>@<mirror_repo_address>/

這里纱意,如果只同步保護(hù)分支的話婶溯,那么是每分鐘同步一次。
而如果同步所有分支的話偷霉,那么就是每五分鐘同步一次迄委。

*4. 關(guān)于Docker使用的擴(kuò)展

在團(tuán)隊(duì)業(yè)務(wù)線累積的過程中,往往會(huì)誕生一些工具类少,基于maven或graddle等現(xiàn)在的項(xiàng)目管理工具叙身,這些工具也可能作為常用框架在公司內(nèi)部累積起來,此時(shí)這些項(xiàng)目的維護(hù)共享等事務(wù)就成了比較重要的事兒硫狞,如果每次需要開發(fā)人員自行打包編譯信轿,比較麻煩,而且往往因?yàn)榧夹g(shù)能力和環(huán)境問題出現(xiàn)各種問題残吩。所以我個(gè)人喜歡利用Docker在公司內(nèi)部放置Maven财忽,NPM,Python泣侮,.net core等一些私有倉(cāng)庫(kù)即彪,這樣當(dāng)這些框架累積起來時(shí),我只需要在項(xiàng)目的配置文件中指定活尊,那么所有開發(fā)人員的內(nèi)部框架使用就會(huì)立即同步隶校,十分方便漏益。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市深胳,隨后出現(xiàn)的幾起案子绰疤,更是在濱河造成了極大的恐慌,老刑警劉巖稠屠,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峦睡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡权埠,警方通過查閱死者的電腦和手機(jī)榨了,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攘蔽,“玉大人龙屉,你說我怎么就攤上這事÷祝” “怎么了转捕?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)唆垃。 經(jīng)常有香客問我五芝,道長(zhǎng),這世上最難降的妖魔是什么辕万? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任枢步,我火速辦了婚禮,結(jié)果婚禮上渐尿,老公的妹妹穿的比我還像新娘醉途。我一直安慰自己,他們只是感情好砖茸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布隘擎。 她就那樣靜靜地躺著,像睡著了一般凉夯。 火紅的嫁衣襯著肌膚如雪货葬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天劲够,我揣著相機(jī)與錄音震桶,去河邊找鬼。 笑死再沧,一個(gè)胖子當(dāng)著我的面吹牛尼夺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淤堵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寝衫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拐邪,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤慰毅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后扎阶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汹胃,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年东臀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了着饥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惰赋,死狀恐怖宰掉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赁濒,我是刑警寧澤轨奄,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站拒炎,受9級(jí)特大地震影響挪拟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜击你,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一玉组、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧果漾,春花似錦球切、人聲如沸谷誓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捍歪。三九已至户辱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間糙臼,已是汗流浹背庐镐。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留变逃,地道東北人必逆。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親名眉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粟矿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容