使用Docker来搭建gitlab

[编者的话] 当文字偶遇代码,当程序插上了翅膀,让分享成为我们彼此沟通的语言。我们期待可以构建这样一个平台让开发者们看到你们的智慧,挖掘你们的才华,让彼此在开源的路上不再孤独。“DaoCloud分享写作计划”已全面启动,本文是入选该计划的第一篇优秀文章。

作者:薛斌雷(绿茶浏览器后端开发)


所有的团队都面临同样一个问题,代码库的版本管理。

gitlab可以说是开源的github,可以自行部署在任何地方。

试用可以访问 gitlab

那对于团队来讲,我要怎么去部署、升级、备份、迁移才是最关键的地方。这个时候有了Docker这么牛逼的东西出现了。

最最最根本的就是它不会影响你现有的环境

这里不推荐使用官网的安装方式,另外使用vagrant的同学们可以看过来了,docker才是王道。

这里废话一点,讲点docker安装的东西,了解的可以跳过。

安装docker

这里以centos6.5为例,其他详见官网

wget http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm  
rpm -Uvh epel-release-6-8.noarch.rpm  
sudo yum update -y  
sudo yum install -y docker-io  
usermod -a -G docker your_user_name  

Daocloud加速器

这个时候你就要用最最牛13的Daocloud加速器了,国内网络的福音啊。

狂点我注册

这个时候只要根据官网提示进行使用即可,体验飞一般的速度,不一样的酸爽。这里插入一段硬广,DaoCloud不仅仅提供高速下载的加速器,他们是国内最早的一站式Docker应用打包发布平台,提供了持续集成、镜像构建、发布管理和容器托管的全套服务。

准备工作

有兴趣的可以访问docker镜像首页来看目前最棒的gitlab docker镜像的官方使用指南。

docker pull sameersbn/gitlab:7.11.2  
docker pull sameersbn/postgresql:9.4  
docker pull sameersbn/redis:latest  

上述的版本大家可以去上面的地址查找最新的版本。

创建数据文件夹, 位置随意,大家记下即可

mkdir /home/username/opt/gitlab/data  
mkdir /home/username/opt/postgresql/data  

启动postgresql

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

上述的位置与数据文件夹保持一致。

启动redis

docker run --name=redis -d sameersbn/redis:latest  

启动gitlab

docker run --name='gitlab' -d \  
--link redis:redisio \
-v /home/username/opt/gitlab/data:/home/git/data \
-p 10022:22 -p 10080:80 \
-e 'GITLAB_PORT=10080' \
-e 'GITLAB_SSH_PORT=10022' \
--link postgresql:postgresql \
-e 'GITLAB_EMAIL=gitlab@daocloud.io' \
-e 'GITLAB_BACKUPS=daily' \
-e 'GITLAB_HOST=gitlab.daocloud.io' \
-e 'GITLAB_SIGNUP=true' \
-e 'GITLAB_GRAVATAR_ENABLED=false' \
sameersbn/gitlab:7.11.2  

上述的位置与数据文件夹保持一致,更多参数请见 这里

上述设置会每天自动进行备份,建议开启。

手动备份

docker stop gitlab  
docker rm gitlab

docker run --name='gitlab' -it --rm \  
你的设置
sameersbn/gitlab:7.11.2 app:rake gitlab:backup:create  

这样就会在/home/username/opt/gitlab/data/backups下面创建备份,备份的所属者请看下ls -la /home/username/opt/gitlab/data/backups下面的文件,迁移的时候有用,另外迁移的话,也只需要保留这个备份出来的文件即可。

恢复备份

确保你的gitlab的版本跟备份的版本一致。

docker run --name='gitlab' -it --rm \  
你的设置
sameersbn/gitlab:7.11.2 app:rake gitlab:backup:restore  

这样就能确保迁移之后的版本跟迁移之前的版本一样了。

迁移

这个时候你只要在目标机器上做完准备工作之后,启动一次gitlab,然后把之前备份的文件放到/home/username/opt/gitlab/data/backups下面,确保备份文件的权限问题之后恢复备份即可

升级

先备份,防止升级后出现问题,然后docker pull新的版本之后,直接run就可以了。

最后讲一下,如何从你的库来源完全镜像到gitlab吧

git clone --mirror https://github.com/exampleuser/repository-to-mirror.git

git remote set-url --push origin https://github.com/exampleuser/mirrored

git fetch -p origin  
git push --mirror  

这个能保证你的来源在被提交的时候,gitlab能保持完全一致。最后只要指定时间关闭来源的提交之后久就可以无缝切换到gitlab了。


本文来自“DaoCloud分享写作计划”,这项计划旨在为开发者提供一个平台,分享使用Docker的心得体会和技术经验。DaoCloud将为文章作者提供一定的物质奖励,具体方式请访问:DaoCloud写作分享计划 ,欢迎Docker爱好者和DaoCloud用户踊跃投稿!