使用docker部署gitlab應(yīng)用

拉取鏡像及啟動(dòng)容器

參考:gitlab documentation

首先使用dao加速器拉取daocker鏡像:

  dao pull gitlab/gitlab-ce

創(chuàng)建volumes

簡單來說volumes够滑,就是可以映射到容器中去的容器外部存儲(chǔ)空間吕世。你可以將一些比價(jià)通用的配置文件,數(shù)據(jù)寞冯,或者是代碼等都使用volumes的形式存儲(chǔ)在容器所在的宿主機(jī)器上。這樣不僅可以永久保留數(shù)據(jù)吮龄,保證數(shù)據(jù)的安全性。同時(shí)還可以方便的修改volumes中的內(nèi)容母债,然后重新映射到容器中尝抖,這對于需要經(jīng)常動(dòng)態(tài)修改文件的容器非常有用。
在本次部署gitlab的時(shí)候昧辽,創(chuàng)建三個(gè)volumes,分別是/mnt/volumes/gitlab下的 config搅荞,logs框咙,data目錄喇嘱。
啟動(dòng)一個(gè)gitlab容器

sudo docker run --detach \
    --hostname git.xiaohuruwei.com \
    --publish 8443:443 --publish 8080:80 --publish 2222:22 \
    --name gitlab \
    --restart always \
    --volume /mnt/volumes/gitlab/config:/etc/gitlab \
    --volume /mnt/volumes/gitlab/logs:/var/log/gitlab \
    --volume /mnt/volumes/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

命令參數(shù)解釋:

--hostname
指定容器中綁定的域名塞栅,會(huì)在創(chuàng)建鏡像倉庫的時(shí)候使用到,這里綁定git.xiaohuruwei.com

--publish
端口映射作烟,冒號前面是宿主機(jī)端口,后面是容器expose出的端口

--volume
volume 映射庄敛,冒號前面是宿主機(jī)的一個(gè)文件路徑,后面是容器中的文件路徑

配置nginx绷雏,支持https

參考:gitlab set nginx
nginx 配置文件

server {
    listen 80;
    server_name git.xiaohuruwei.com;
    access_log /var/log/nginx/gitlab.xiaohuruwei.access.log;
    error_log /var/log/nginx/gitlab.xiaohuruwei.error.log;
    rewrite ^ https://git.xiaohuruwei.com;
}

https proxy

server {
    listen       443 ssl;
    server_name  git.xiaohuruwei.com;
    access_log /var/log/nginx/https-gitlab.xiaohuruwei.access.log;
    error_log /var/log/nginx/https-gitlab.xiaohuruwei.error.log;
    # ssl 證書配置涎显,這里使用的是自己生成的證書,在訪問時(shí)會(huì)提示證書問題期吓,選擇相信即可。
    # 如果想要公認(rèn)的證書讨勤,需要在網(wǎng)絡(luò)上的一些授權(quán)中心生成
    ssl on;
    ssl_certificate /etc/nginx/ssl/getbase.crt;
    ssl_certificate_key /etc/nginx/ssl/getbase_nopass.key;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://localhost:8443;
    }
}

開放gitlab的https支持

僅僅由nginx反向代理https是不行的晨另,因?yàn)檫€需要打開gitlab的https支持。

  • 修改配置文件刨晴,在/mnt/volumes/gitlab/config/ 目錄下的gitlab.rb中添加:
  # note the 'https' below
  external_url "https://gitlab.example.com"
  • 新建ssl目錄路翻,同時(shí)在該目錄下添加ssl證書文件,命名要與上述域名中保持一致

    git.xiaohuruwei.com.crt
    git.xiaohuruwei.com.key

  • 重新啟動(dòng)容器

docker restart gitlab

訪問gitlab測試

  • 打開web界面蝶桶,默認(rèn)登錄名為root,密碼為5iveL!fe(已經(jīng)改為厘米腳印的默認(rèn)密碼)真竖,新建一個(gè)project倉庫:test
  • 因?yàn)閟sl證書是自己生成的儡蔓,并不具有全網(wǎng)通用性,因此只能先選擇相信證書召锈。在本地設(shè)置環(huán)境變量:
  export GIT_SSL_NO_VERIFY=1

開啟郵件服務(wù)

默認(rèn)的郵件服務(wù)不太好使,所以這里配置自己的郵件服務(wù)涨岁。參考官方gitlab stmp文檔

使用163郵箱, 按照官方文檔配置后蹬铺,會(huì)發(fā)現(xiàn)發(fā)送郵件沒有起作用秉撇。

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xiaohuruwei@163.com"
gitlab_rails['smtp_password'] = "xxxx"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'

查看log時(shí),由于log比較雜亂琐馆,沒有發(fā)現(xiàn)問題,后來在ruby社區(qū)發(fā)現(xiàn)有人解決過同樣的問題:
GitLab 配置通過 smtp.163.com 發(fā)送郵件
以及網(wǎng)易的官方解釋:
網(wǎng)易服務(wù)器smtp機(jī)器要求身份驗(yàn)證帳號和發(fā)信帳號必須一致瘦麸,如果用戶在發(fā)送郵件時(shí),身份驗(yàn)證帳號和發(fā)件人帳號是不同的厉碟,因此拒絕發(fā)送。
所以又添加了兩行配置后測試可以正常使用了:

gitlab_rails['gitlab_email_from'] = "xiaohuruwei@163.com"
user['git_user_email'] = "xiaohuruwei@163.com"

ssh方式訪問

因?yàn)槭鞘褂胐ocker部署的箍鼓,通過ssh方式(比如git clone git@git.xiaohuruwei.com)訪問會(huì)有兩層認(rèn)證:

  • 一層是freelancer服務(wù)器的認(rèn)證
  • 另一層是gitlab的認(rèn)證勿她。

后者需要使用ssh-key
前者可能需要ssh本身的反向代理(現(xiàn)在使用的nginx不支持除http,https以外的反向代理)逢并,

現(xiàn)在發(fā)現(xiàn)使用端口轉(zhuǎn)發(fā)的形式比較困難,但是可以改變默認(rèn)的gitlab的ssh端口為非標(biāo)準(zhǔn)端口:
直接修改gitlab配置文件中的變量:

gitlab_shell_ssh_port = 2222

然后重新啟動(dòng)docker容器背稼,就可以在web界面中看到相應(yīng)的ssh地址發(fā)生了改變:
ssh://git@git.xiaohuruwei.com:2222/root/test.git 然后就直接可以繼續(xù)使用git clone來繼續(xù)操作了

關(guān)于ssl證書參考:

https那些事玻蝌,ssl證書

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末词疼,一起剝皮案震驚了整個(gè)濱河市贰盗,隨后出現(xiàn)的幾起案子阳欲,更是在濱河造成了極大的恐慌,老刑警劉巖球化,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赴蝇,居然都是意外死亡巢掺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門熄阻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秃殉,你說我怎么就攤上這事浸剩。” “怎么了绢要?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵重罪,是天一觀的道長。 經(jīng)常有香客問我剿配,道長,這世上最難降的妖魔是什么呼胚? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任蝇更,我火速辦了婚禮呼盆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘访圃。我一直安慰自己相嵌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漠另,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笆搓。 梳的紋絲不亂的頭發(fā)上性湿,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天肤频,我揣著相機(jī)與錄音算墨,去河邊找鬼。 笑死报咳,一個(gè)胖子當(dāng)著我的面吹牛暑刃,可吹牛的內(nèi)容都是我干的膜眠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狐树!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幻件,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤徽曲,失蹤者是張志新(化名)和其女友劉穎秃臣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哪工,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雁比,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年偎捎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茴她。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜕径,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出败京,到底是詐尸還是另有隱情兜喻,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布赡麦,位于F島的核電站朴皆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泛粹。R本人自食惡果不足惜遂铡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晶姊。 院中可真熱鬧扒接,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宗侦。三九已至矾利,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舶斧,已是汗流浹背察皇。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留师痕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓因篇,卻偏偏與公主長得像竞滓,于是被迫代替她去往敵國和親商佑。 傳聞我的和親對象是個(gè)殘疾皇子厢塘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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