使用docker搭建gitlab初體驗(yàn)+數(shù)據(jù)備份

一. 背景

作為程序員等缀,像GitHub這種好工具是必須得十分了解的矛渴,但是有時(shí)GitHub并不能滿足我們所有的需求,就如作者所在的公司颅停,我們的代碼都是商業(yè)性的產(chǎn)品沐兵,不可能放到GitHub的開放倉(cāng)庫(kù)中的,而申請(qǐng)GitHub私人倉(cāng)庫(kù)需要錢便监。這就陷入了尷尬的局面扎谎,那有沒(méi)有一種既能具有GitHub一樣的功能,又能保護(hù)隱私免費(fèi)的管理工具呢烧董?答案是肯定的毁靶,感謝程序員偉大的開源精神,我們有了GitLab!!!今天筆者在這里就跟大家分享一下自己使用docker搭建GitLab的過(guò)程吧逊移,這其中踩了一些坑预吆,希望看過(guò)這篇文章的人不用在踩我踩過(guò)的坑了!

二. 環(huán)境介紹

服務(wù)器信息:
CPU : 2
DISK : 30G
RAM : 4G
OS : Linux centos7-0 3.10.0-229.el7.x86_64
這里筆者使用的是自己公司的服務(wù)器胳泉,也可以使用虛擬機(jī)進(jìn)行搭建

三. 搭建過(guò)程

1. 安裝docker
因?yàn)槲覀兪鞘褂胐ocker搭建的拐叉,所以需要先安裝docker,docker支持不同的OS扇商,具體的安裝信息這里不做詳細(xì)介紹凤瘦,可以自己的操作系統(tǒng),參考官方的安裝指南進(jìn)行安裝案铺。http://www.docker.io
2. 安裝GitLab及相關(guān)組件
GitLab需要用到數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)相關(guān)數(shù)據(jù)蔬芥,所以需要在安裝GitLab的同時(shí)安裝數(shù)據(jù)庫(kù),這里使用的是postgresql和redis控汉。我在查找相關(guān)的鏡像笔诵,之后發(fā)現(xiàn)有很多現(xiàn)成的鏡像,這里我使用的sameersbn鏡像姑子。但是有一點(diǎn)我認(rèn)為不是很好的是:這個(gè)鏡像沒(méi)有把redis乎婿、postgresql集成到gitlab的容器里面,需要先單獨(dú)pull這兩個(gè)鏡像run一下街佑,然后再pull gitlab的鏡像進(jìn)行安裝谢翎。

使用如下命令分別拉取最新的鏡像:

docker pull sameersbn/redis
docker pull sameersbn/postgresql
docker pull sameersbn/gitlab

這里有第一個(gè)坑:因?yàn)槲覀兡J(rèn)都是從docker的官方倉(cāng)庫(kù)中拉去鏡像,但是由于國(guó)內(nèi)訪問(wèn)國(guó)外的網(wǎng)站有墻舆乔,而且速度也是十分的慢岳服,所以需要代理剂公。這里推薦Daocloud加速器 https://www.daocloud.io/ 免費(fèi)使用希俩,但是需要先注冊(cè),登錄成功后纲辽,找到加速器執(zhí)行相關(guān)命令即可颜武。筆者親測(cè)速度明顯快很多璃搜!

使用如下命令運(yùn)行postgresql鏡像:

docker run --name postgresql -d \  
-e 'DB_NAME=gitlabhq_production' \  
-e 'DB_USER=gitlab' \
-e 'DB_PASS=password' \  
-e 'DB_EXTENSION=pg_trgm' \  
-v /home/root/opt/postgresql/data:/var/lib/postgresql \  
sameersbn/postgresql

這里需要解釋的是:
(1). 以上是一條命令,反斜杠是為了在命令內(nèi)換行方便閱讀鳞上,如果不喜歡这吻,也可以寫在一行。
(2). -e后面跟的都是容器的環(huán)境參數(shù)篙议,都是在制作鏡像的時(shí)候指定好的唾糯,所以不要去改動(dòng)。
(3). -v后面是添加數(shù)據(jù)卷鬼贱,這樣在容器退出的時(shí)候數(shù)據(jù)就不會(huì)丟失移怯,其中 /home/root/opt/postgresql/data是作者自己創(chuàng)建的文件夾,讀者可以自己自定義这难,后面的部分是容器內(nèi)的文件路徑舟误,需要保持不變。
(4). 命令執(zhí)行成功之后會(huì)在控制臺(tái)顯示一串容器的編號(hào)姻乓,可以使用命令docker ps查看剛剛啟動(dòng)的容器嵌溢。

使用如下命令運(yùn)行redis鏡像:

docker run --name redis -d \  
-v /home/root/opt/redis/data:/var/lib/redis \  
sameersbn/redis 

這里跟啟動(dòng)postgresql一樣。

使用如下命令運(yùn)行GitLab鏡像:

docker run --name gitlab -d \
--link postgresql:postgresql --link redis:redisio \
-p 10022:22 -p 10080:80 \
-e 'GITLAB_PORT=10080' \
-e 'GITLAB_SSH_PORT=10022' \
-e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string'\
-e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string'\
-e 'GITLAB_HOST=服務(wù)器地址' \
-e 'GITLAB_EMAIL=郵箱地址' \
-e 'SMTP_ENABLED=true' \
-e 'SMTP_DOMAIN=www.sina.com' \
-e 'SMTP_HOST=smtp.sina.com' \ 
-e 'SMTP_STARTTLS=false'  \
-e 'SMTP_USER=郵箱地址' \
-e 'SMTP_PASS=郵箱密碼' \
-e 'SMTP_AUTHENTICATION=login' \
-e 'GITLAB_BACKUP_SCHEDULE=daily' \
-e 'GITLAB_BACKUP_TIME=10:30' \
-v /home/root/opt/gitlab/data:/home/git/data \
sameersbn/gitlab

這里需要解釋的是:
(1). 網(wǎng)上又很多教程講關(guān)于使用docker安裝GitLab蹋岩,但是講的不全面赖草,至少我按照他們的方法安裝時(shí)不能正常運(yùn)行,這里是第三個(gè)坑:一定要加上如下環(huán)境參數(shù):

-e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string'\
-e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string'\

有關(guān)于這三個(gè)環(huán)境參數(shù)的含義:

官方的解釋

我個(gè)人的理解是用來(lái)進(jìn)行加密的key剪个。
(2). 上面有關(guān)SMTP的環(huán)境參數(shù)是配置郵箱的疚顷,需要填上對(duì)應(yīng)的郵箱信息,我使用的是新浪郵箱禁偎,讀者可以根據(jù)自己的郵箱進(jìn)行填寫腿堤。
(3). 使用GitLab需要兩個(gè)端口,一個(gè)是web端口如暖,一個(gè)是SSH端口用于push代碼的所以一下代碼進(jìn)行端口映射和指定:

-p 10022:22 -p 10080:80 \
-e 'GITLAB_PORT=10080' \
-e 'GITLAB_SSH_PORT=10022' \

(4). GitLab有自帶的備份笆檀,這里可以通過(guò)如下進(jìn)行配置:

-e 'GITLAB_BACKUP_SCHEDULE=daily' \
-e 'GITLAB_BACKUP_TIME=10:30' \

指定的是每天10:30進(jìn)行備份。

說(shuō)到這里基本上GitLab就搭建好了盒至,這里還有一個(gè)小坑就是:運(yùn)行這些容器的時(shí)候可以把代碼寫進(jìn)shell腳本中酗洒,然后通過(guò)腳本進(jìn)行運(yùn)行,不然直接在終端打的話很麻煩枷遂。

一下就是筆者安裝完后的截圖樱衷,直接訪問(wèn):http://服務(wù)器地址:10080 即可,首次訪問(wèn)可能會(huì)出現(xiàn)錯(cuò)誤頁(yè)面酒唉,刷新幾下頁(yè)面就可以了然后在修改密碼默認(rèn)用戶名:root 之后就可以正常使用矩桂。

登錄界面
group
admin area

四. 備份

我們可以使用GitLab自帶的備份功能,在啟動(dòng)容器的時(shí)候就進(jìn)行設(shè)置痪伦,然后再使用GitLab的 app:rake gitlab:backup:restore命令進(jìn)行恢復(fù)侄榴,這里網(wǎng)上的教程都有說(shuō)明可以參考以下網(wǎng)站:
sameersbn的GitHub wiki:
https://github.com/sameersbn/docker-gitlab#automated-backups
這個(gè)是官方的所以比較全面雹锣,里面還有關(guān)于各種環(huán)境參數(shù)的介紹。

這里作者使用的是如下的備份方法:
因?yàn)槲覀冊(cè)谶\(yùn)行postgresql癞蚕、redis和GitLab的時(shí)候都使用了本地的文件夾進(jìn)行了數(shù)據(jù)的持久化蕊爵,而且我們實(shí)際需要備份的數(shù)據(jù)都在本地了,那么其實(shí)就可以直接使用rsync命令備份本地的這些卷(剛剛的文件夾)即可桦山,無(wú)需再去深入到GitLab內(nèi)部攒射。如果搭建的GitLab崩潰了,或者服務(wù)器崩潰了恒水,直接再使用docker再搭一個(gè)匆篓,在把剛剛的卷跟對(duì)應(yīng)的postgresql、redis和GitLab內(nèi)的數(shù)據(jù)文件夾進(jìn)行映射即可寇窑。這是也不需要修改之前的啟動(dòng)命令鸦概,十分的方便而且作者自己測(cè)試過(guò),發(fā)現(xiàn)能夠達(dá)到要求甩骏,原先的倉(cāng)庫(kù)窗市、用戶的SSH信息等都在。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饮笛,一起剝皮案震驚了整個(gè)濱河市咨察,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌福青,老刑警劉巖摄狱,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異无午,居然都是意外死亡媒役,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宪迟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)酣衷,“玉大人,你說(shuō)我怎么就攤上這事次泽〈┮牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵意荤,是天一觀的道長(zhǎng)啊片。 經(jīng)常有香客問(wèn)我,道長(zhǎng)玖像,這世上最難降的妖魔是什么紫谷? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上碴里,老公的妹妹穿的比我還像新娘。我一直安慰自己上真,他們只是感情好咬腋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著睡互,像睡著了一般根竿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上就珠,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天寇壳,我揣著相機(jī)與錄音,去河邊找鬼妻怎。 笑死壳炎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逼侦。 我是一名探鬼主播匿辩,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榛丢!你這毒婦竟也來(lái)了铲球?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晰赞,失蹤者是張志新(化名)和其女友劉穎稼病,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掖鱼,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡然走,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戏挡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丰刊。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖增拥,靈堂內(nèi)的尸體忽然破棺而出啄巧,到底是詐尸還是另有隱情,我是刑警寧澤掌栅,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布秩仆,位于F島的核電站,受9級(jí)特大地震影響猾封,放射性物質(zhì)發(fā)生泄漏澄耍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望齐莲。 院中可真熱鬧痢站,春花似錦、人聲如沸选酗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芒填。三九已至呜叫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殿衰,已是汗流浹背朱庆。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闷祥,地道東北人娱颊。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像凯砍,于是被迫代替她去往敵國(guó)和親维蒙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件果覆?Google Compute Engi...
    ahohoho閱讀 15,535評(píng)論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一颅痊、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,501評(píng)論 0 120
  • 五、Docker 端口映射 無(wú)論如何局待,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問(wèn)不到的斑响。此外,除了...
    R_X閱讀 1,751評(píng)論 0 7
  • 寫在前面: 這兩天把公司的gitlab服務(wù)從老版本(7.12.0钳榨,源碼版本)升級(jí)到了最新版(8.14.3舰罚,dock...
    mr_franklin閱讀 6,557評(píng)論 2 9
  • 時(shí)間就像捏在手心的沙子,捏得越緊薛耻,流失得越快营罢。 在晨曦微信群上,大一大二的各個(gè)專業(yè)學(xué)生幾乎都在吐槽自己的專業(yè)饼齿,甚至...
    一路風(fēng)景_閱讀 269評(píng)論 0 0