阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 920阅读
  • 0回复

[环境部署]使用Docker搭建Gitlab

级别: 论坛版主
发帖
371
云币
447

docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全。 hG= k1T%=  
@ ]f3| >I  
rO0ZtC{K  
Gitlab是目前比较流行的开源类Github代码管理平台。Gitlab使用Rails开发,使用PostgreSQL或MySQL数据库,Redis做缓存。一般己搭建私有代码仓库,Gitlab通常是首选。这里简单介绍一下dockerized Gitlab。 h$70H^r  
t)9]<pN%  
CoU3S,;*  
Gitlab的docker镜像早已有人做好了,并且维护相当不错。大家可以前往其GitHub仓库了解该镜像的情况。官方repo的readme中已经有详细的安装配置方案,这里我简单的梳理一下部署流程。 wW-Ab  
i;c'P}[K  
Yx5J$!Ld  
安装Docker UP\C"\  
这里以Ubuntu 14.04发行版为例,在bash中输入一下命令安装最新的docker: q xfLfgu^  
{>@QJlE0  
P/ci/y_1  
sudo apt-get purge docker.io SSE3tcRRl  
curl -s https://get.docker.io/ubuntu/ | sudo sh @g4Shlx|  
sudo apt-get update Z!= L   
sudo apt-get install lxc-docker a:A n=NA  
注意: 如果你使用了阿里最新推出的Docker镜像,那么可以省略本节的步骤。因为阿里云的这个镜像已经自带了1.2版的docker,版本比较新,可以直接使用。 eJ)1K  
Jen%}\  
id^|\hDR  
安装docker-gitlab &y7 0  
使用如下命令可以使Docker下载对应版本的Gitlab镜像: jyi FM5&  
Z?17Pu'Dp  
ahA{B1M)n  
docker pull sameersbn/gitlab:7.5.3 9RQU?  
上面的命令下载7.5.3版的Gitlab,如果想下载最新版本,可以输入以下命令: bni) Qw  
7R,qDp S  
T7 {<arL$  
docker pull sameersbn/gitlab:latest 9JPEj-3`g  
下载完成就算完成安装了。也可以Clone刚才的提到的仓库,然后在本机上build镜像: pz 7H To;p  
r| f-_D  
R2rsJ  
git clone https://github.com/sameersbn/docker-gitlab.git l-}KmZ]  
cd docker-gitlab /v|Onq1Y4  
docker build --tag="$USER/gitlab" . :?=Q39O9  
注意上面最后一行命令结尾有一个"."符号,不要掉了。 N5? IpE  
KY$k`f6?P  
#{$1z;i?f  
安装PostgreSQL *YtB )6j  
Gitlab推荐使用PostgreSQL作为数据库。既然使用了docker,那么我们为何不考虑把所有的组件都用docker包装起来?我们一样可以下载PostgreSQL的镜像完成安装,这种安装更加便捷。 5 6DoO'  
BC! 6O/kr  
r<c #nD~K  
首先输入以下命令下载PostgreSQL镜像: qZ*f%L(  
q$gz_nVq,b  
s\gp5MT  
docker pull sameersbn/postgresql:latest oQT2S>cm^  
然后我们要为数据库默认的表空间建立目录以存放数据: *KJB>W%@uM  
*0y{ ~@  
S8" f]5s  
mkdir -p /opt/postgresql/data S`m,S4-eD  
这里/opt/postgresql/data部分可以替换成你自己希望建立的地址。 如果是使用SELinux,那么还需要改变一下这个目录的安全设置: NvJV</l6 A  
2.-o@im0  
NF+<#*1  
sudo chcon -Rt svirt_sandbox_file_t /opt/postgresql/data r\2vl8X~  
如果没有使用SELinux,可以跳过上面一条命令。 S2K#[mDG  
u5Up&QE!>q  
$wV1*$1NM  
最后使用以下命令行启动数据库: _?`&JF?*  
J;}3t!  
gCuAF$o  
docker run --name=postgresql -d \ 2&he($HIzg  
  -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \ d'"r("w#  
  -v /opt/postgresql/data:/var/lib/postgresql \ *geN [ [  
  sameersbn/postgresql:latest q0&$7GH4  
这里,"-e"选项后面的内容请不要随意变更,这里的配置都是Gitlab默认的数据库配置,如果没有在后面Gitlab镜像启动的设置里面做相应的修改的话,这里的修改会让程序无法正常运行。 &|9.}Z8U  
< Ek/8x  
:Q_3hK  
安装Redis y('k`>C  
同样,我们可以使用docker来安装Redis: h3!$r~T!a:  
5o)Y$>T0  
WsI>n  
docker pull sameersbn/redis:latest R)5n 8  
然后启动它: bsS:"/?>  
$,fy$ Qk,S  
sy/nESZs  
docker run --name=redis -d sameersbn/redis:latest 5~H#(d<oZ  
启动gitlab 65TfFcQ<S  
在最终启动Gitlab之前,我们还需要为Gitlab创建一个目录用来存放提交上来的代码,docker-gitlab内部使用/home/git/data这个目录存放代码,我们在容器外部创建一个目录然后在启动的时候挂载到这个路径即可: y(W|eBe  
uO6{r v\  
,"\@fwy{  
mkdir -p /opt/gitlab/data Y?K{(szo ?  
mkdir -p /opt/gitlab/backups 0 1V^L}  
同样,如果使用SELinux,需要修改目录的安全配置: upy\gkpnGO  
b2C`g]ibQ  
lg$zGa?  
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/data h-#1U3d  
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/backups fv!?Ga(  
在完成上面所有的步骤以后,我们可以用以下命令启动Gitlab: ;*2>ES  
][&9]omB  
(R!hjw~  
docker run --name='gitlab' -d \ 5!X1G8h)uy  
  -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \ T/1gI9 X  
  -e 'GITLAB_BACKUPS=monthly' \ 5jB* fIz  
  -p 10022:22 -p 10080:80 \ *L4`$@l8  
  -v /opt/gitlab/data:/home/gitl/data \ c{3wk7  
  -v /opt/gitlab/backups:/home/git/data/backups ,%9df+5k  
  sameersbn/gitlab:7.5.3 hk[ %a$Y  
上面的命令将使用10080作为Gitlab的Web访问端口,10022将作为ssh push和pull代码的端口。 在本地可以使用浏览器打开http://localhost:10080来访问Gitlab,初始登录网站使用root账户,用户名为root,密码为:5iveL!fe,登录后需要立即修改密码。 YW/QC'_iC  
PcT?<HU  
u #w29Pm  
gitlab参数 *Hz^K0:8(  
这里解释一下各参数: )wvHGecp*  
Jl3g{a  
P!G858V(  
-d: 后台运行 06q(aI^Ch@  
-e:配置Gitlab运行的环境变量,这个参数很重要,具体有哪些环境变量,后面列举 9iUrnG*  
-p: 端口转发规则 6( CDNMzj  
-v: 共享目录挂载,即docker容器内外数据共享 %D g0fL  
Gitlab的环境变量配置比较多,这里列举一下比较重要的Gitlab的环境变量: {X(:jAy  
~ `M\Ir  
"ZM4F?x  
GITLAB_HOST: 这个是Gitlab服务器的hostname,你需要将此设定为网站的域名或者ip(不带端口号),默认值为localhost,这个值会被Gitlab用来生成repo的链接,所以必须要设置。否则,在创建的repo中,会发现所有的repo链接都是以localhost为hostname。 wMqX)}>  
GITLAB_PORT Gitlab网站的访问端口,这里的设置要结合端口转发一起设置,否则会导致网站无法访问,默认值为80 G3G#ep~)vC  
GITLAB_SSH_PORT Gitlab的SSH代码提交方式使用的SSH端口,这里的设置要结合端口转发一起设置,否则会导致代码无法提交,默认值为22。如果是在VPS上部署,这个值请使用别的端口,比如上面提到的10022端口,否则会与VPS原本的SSH端口产生冲突,造成SSH无法登录VPS j)C,%Ol  
GITLAB_BACKUPS Gitlab的自动备份配置,有disable, daily, weekly, monthly四个可选值,默认为disable。建议打开自动备份 ,'xYlH3s  
GITLAB_BACKUP_DIR Gitlab自动备份目录,默认值为/home/git/data/backups ?']5dD  
aE;le{|!({  
}G4 z tiuG  
转载: }X*Riu7gk  
Github-ouyangzhiping
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)