阿里云
阿里云大学认证0元起
发表主题 回复主题
  • 183阅读
  • 0回复

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

级别: 论坛版主
发帖
370
云币
639

docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全。 < V*/1{  
P=aYwmC  
xpJ=yxO  
Gitlab是目前比较流行的开源类Github代码管理平台。Gitlab使用Rails开发,使用PostgreSQL或MySQL数据库,Redis做缓存。一般己搭建私有代码仓库,Gitlab通常是首选。这里简单介绍一下dockerized Gitlab。 A*~BkvPr  
9vP#/ -g  
T/PmT:Qg `  
Gitlab的docker镜像早已有人做好了,并且维护相当不错。大家可以前往其GitHub仓库了解该镜像的情况。官方repo的readme中已经有详细的安装配置方案,这里我简单的梳理一下部署流程。 cGyR_8:2cv  
;$67GK  
& }7+.^  
安装Docker +G6 Ge;  
这里以Ubuntu 14.04发行版为例,在bash中输入一下命令安装最新的docker: ,e^~(ITaq  
Q@uWh:  
8!{ }WLwb  
sudo apt-get purge docker.io #^}s1 4n  
curl -s https://get.docker.io/ubuntu/ | sudo sh vm7ag 7@O  
sudo apt-get update t`Rbn{   
sudo apt-get install lxc-docker /:v}Ni"6nF  
注意: 如果你使用了阿里最新推出的Docker镜像,那么可以省略本节的步骤。因为阿里云的这个镜像已经自带了1.2版的docker,版本比较新,可以直接使用。 6!HYx  
82 dmlPwJC  
<G0Ut6J>  
安装docker-gitlab <KJ|U0/jGd  
使用如下命令可以使Docker下载对应版本的Gitlab镜像: !>N+a3   
;Y,zlq2  
wRZFBf~ :  
docker pull sameersbn/gitlab:7.5.3 nIZsKbnw  
上面的命令下载7.5.3版的Gitlab,如果想下载最新版本,可以输入以下命令: rp4{lHw>C/  
d)3jkHYEjj  
=te4p@  
docker pull sameersbn/gitlab:latest _f~$iY  
下载完成就算完成安装了。也可以Clone刚才的提到的仓库,然后在本机上build镜像: v cUGBGX_&  
 9I:3  
} lXor~_i  
git clone https://github.com/sameersbn/docker-gitlab.git O)ose?Z  
cd docker-gitlab (+6N)9rj`/  
docker build --tag="$USER/gitlab" . * H~=dPC  
注意上面最后一行命令结尾有一个"."符号,不要掉了。 Av0(zA2  
^ p7z3ng  
oVr:ZwkG3  
安装PostgreSQL =4sx(<  
Gitlab推荐使用PostgreSQL作为数据库。既然使用了docker,那么我们为何不考虑把所有的组件都用docker包装起来?我们一样可以下载PostgreSQL的镜像完成安装,这种安装更加便捷。 0e07pF/!  
cE>m/^SKr  
Fn0 |v66  
首先输入以下命令下载PostgreSQL镜像: >oN Wf  
})`z6d]3  
r7#.DJnN.  
docker pull sameersbn/postgresql:latest Xy./1`X  
然后我们要为数据库默认的表空间建立目录以存放数据: cNikLd~?A  
%QQ 2u$  
upaQoX/C  
mkdir -p /opt/postgresql/data _#Lq~02 %  
这里/opt/postgresql/data部分可以替换成你自己希望建立的地址。 如果是使用SELinux,那么还需要改变一下这个目录的安全设置: $E!f@L  
N`{ 6<Z0  
,hr v  
sudo chcon -Rt svirt_sandbox_file_t /opt/postgresql/data AyW=.  
如果没有使用SELinux,可以跳过上面一条命令。 zC*dJXt@  
A^$xE6t  
4e?bkC  
最后使用以下命令行启动数据库: o bN8+ j  
y>:U&P^  
Y DW^N] G  
docker run --name=postgresql -d \ W9oWj7&h  
  -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \ BR-wL3x b  
  -v /opt/postgresql/data:/var/lib/postgresql \ Tm9sQ7Oj(  
  sameersbn/postgresql:latest >6[d&SM6  
这里,"-e"选项后面的内容请不要随意变更,这里的配置都是Gitlab默认的数据库配置,如果没有在后面Gitlab镜像启动的设置里面做相应的修改的话,这里的修改会让程序无法正常运行。 db=S*LUbl  
"Bwmq9Jq  
?S9vYaA$  
安装Redis Pd& Npp3  
同样,我们可以使用docker来安装Redis: vC^{,?@  
4<vi@,s  
Um4DVg5  
docker pull sameersbn/redis:latest 4"3.7.<Q`  
然后启动它: '/9q7?[E!  
-E3cS  
4\nG Wi{2  
docker run --name=redis -d sameersbn/redis:latest )pe17T1|  
启动gitlab I<XYLe[_S  
在最终启动Gitlab之前,我们还需要为Gitlab创建一个目录用来存放提交上来的代码,docker-gitlab内部使用/home/git/data这个目录存放代码,我们在容器外部创建一个目录然后在启动的时候挂载到这个路径即可: r&Qa;-4Pl  
xG(iSuz  
FV3[7w=D\  
mkdir -p /opt/gitlab/data &cd>.&1<2  
mkdir -p /opt/gitlab/backups 00s)=A_  
同样,如果使用SELinux,需要修改目录的安全配置: A|]#b?-  
Ud2Tn*QmI  
`iN\@)E  
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/data a1Q%Gn@R  
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/backups VXlAK(   
在完成上面所有的步骤以后,我们可以用以下命令启动Gitlab: ?Bl/bY$*h  
?FUK_]  
D%LYQ  
docker run --name='gitlab' -d \ W'f"kM  
  -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \ Fq!_VF^r  
  -e 'GITLAB_BACKUPS=monthly' \ * hS6F  
  -p 10022:22 -p 10080:80 \ <3/_'/C  
  -v /opt/gitlab/data:/home/gitl/data \ 61_-G#W  
  -v /opt/gitlab/backups:/home/git/data/backups )''V}Zn.X  
  sameersbn/gitlab:7.5.3 RHpjJZUV  
上面的命令将使用10080作为Gitlab的Web访问端口,10022将作为ssh push和pull代码的端口。 在本地可以使用浏览器打开http://localhost:10080来访问Gitlab,初始登录网站使用root账户,用户名为root,密码为:5iveL!fe,登录后需要立即修改密码。 ( ;^>G[  
=yM%#{t&W  
s$(%?,yf2  
gitlab参数 WC37=8mA  
这里解释一下各参数: Lfdg5D5.P  
~ iQBgd@D^  
~b!la  
-d: 后台运行 nT +ZSr  
-e:配置Gitlab运行的环境变量,这个参数很重要,具体有哪些环境变量,后面列举 [~RO9=;L  
-p: 端口转发规则 &l!T2PX!  
-v: 共享目录挂载,即docker容器内外数据共享 _Gaem"k|  
Gitlab的环境变量配置比较多,这里列举一下比较重要的Gitlab的环境变量: WHOX<YJs  
md? cvGDE  
2K o]Q_,~  
GITLAB_HOST: 这个是Gitlab服务器的hostname,你需要将此设定为网站的域名或者ip(不带端口号),默认值为localhost,这个值会被Gitlab用来生成repo的链接,所以必须要设置。否则,在创建的repo中,会发现所有的repo链接都是以localhost为hostname。 l 9g  
GITLAB_PORT Gitlab网站的访问端口,这里的设置要结合端口转发一起设置,否则会导致网站无法访问,默认值为80 HB$?}V  
GITLAB_SSH_PORT Gitlab的SSH代码提交方式使用的SSH端口,这里的设置要结合端口转发一起设置,否则会导致代码无法提交,默认值为22。如果是在VPS上部署,这个值请使用别的端口,比如上面提到的10022端口,否则会与VPS原本的SSH端口产生冲突,造成SSH无法登录VPS O"df5x9@  
GITLAB_BACKUPS Gitlab的自动备份配置,有disable, daily, weekly, monthly四个可选值,默认为disable。建议打开自动备份 4\p%|G^hU  
GITLAB_BACKUP_DIR Gitlab自动备份目录,默认值为/home/git/data/backups ;ND[+i2MN  
*h=>*t?I2  
<1Sj_HCT  
转载: Rg\4#9S JF  
Github-ouyangzhiping
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个