docker用来隔离应用仍是很方便的,一来自己的操做较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,由于像数据库这样的应用不会再全局暴露端口,同时应用间的通讯经过加密和端口转发,更加安全。html
Gitlab是目前比较流行的开源类Github代码管理平台。Gitlab使用Rails开发,使用PostgreSQL或MySQL数据库,Redis作缓存。通常本身搭建私有代码仓库,Gitlab一般是首选。这里简单介绍一下dockerized Gitlab。git
Gitlab的docker镜像早已有人作好了,而且维护至关不错。你们能够前往其GitHub仓库了解该镜像的状况。官方repo的readme中已经有详细的安装配置方案,这里我简单的梳理一下部署流程。github
这里以Ubuntu 14.04发行版为例,在bash中输入一下命令安装最新的docker:redis
sudo apt-get purge docker.io curl -s https://get.docker.io/ubuntu/ | sudo sh sudo apt-get update sudo apt-get install lxc-docker
注意: 若是你使用了阿里云最新推出的Docker镜像,那么能够省略本节的步骤。由于阿里云的这个镜像已经自带了1.2版的docker,版本比较新,能够直接使用。sql
使用以下命令可使Docker下载对应版本的Gitlab镜像:docker
docker pull sameersbn/gitlab:7.5.3
上面的命令下载7.5.3版的Gitlab,若是想下载最新版本,能够输入如下命令:数据库
docker pull sameersbn/gitlab:latest
待下载完成后就算完成安装了。
也能够Clone刚才的提到的仓库,而后在本机上build镜像:ubuntu
git clone https://github.com/sameersbn/docker-gitlab.git cd docker-gitlab docker build --tag="$USER/gitlab" .
注意上面最后一行命令结尾有一个"."符号,不要掉了。浏览器
Gitlab推荐使用PostgreSQL做为数据库。既然使用了docker,那么咱们为什么不考虑把全部的组件都用docker包装起来?咱们同样能够下载PostgreSQL的镜像完成安装,这种安装更加便捷。缓存
首先输入如下命令下载PostgreSQL镜像:
docker pull sameersbn/postgresql:latest
而后咱们要为数据库默认的表空间创建目录以存放数据:
mkdir -p /opt/postgresql/data
这里/opt/postgresql/data
部分能够替换成你本身但愿创建的地址。
若是是使用SELinux,那么还须要改变一下这个目录的安全设置:
sudo chcon -Rt svirt_sandbox_file_t /opt/postgresql/data
若是没有使用SELinux,能够跳过上面一条命令。
最后使用如下命令行启动数据库:
docker run --name=postgresql -d \ -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \ -v /opt/postgresql/data:/var/lib/postgresql \ sameersbn/postgresql:latest
这里,"-e"选项后面的内容请不要随意变动,这里的配置都是Gitlab默认的数据库配置,若是没有在后面Gitlab镜像启动的设置里面作相应的修改的话,这里的修改会让程序没法正常运行。
一样,咱们可使用docker来安装Redis:
docker pull sameersbn/redis:latest
而后启动它:
docker run --name=redis -d sameersbn/redis:latest
在最终启动Gitlab以前,咱们还须要为Gitlab建立一个目录用来存放提交上来的代码,docker-gitlab内部使用/home/git/data
这个目录存放代码,咱们在容器外部建立一个目录而后在启动的时候挂载到这个路径便可:
mkdir -p /opt/gitlab/data mkdir -p /opt/gitlab/backups
一样,若是使用SELinux,须要修改目录的安全配置:
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/data sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/backups
在完成上面全部的步骤之后,咱们能够用如下命令启动Gitlab:
docker run --name='gitlab' -d \ -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \ -e 'GITLAB_BACKUPS=monthly' \ -p 10022:22 -p 10080:80 \ -v /opt/gitlab/data:/home/gitl/data \ -v /opt/gitlab/backups:/home/git/data/backups sameersbn/gitlab:7.5.3
上面的命令将使用10080做为Gitlab的Web访问端口,10022将做为ssh push和pull代码的端口。
在本地可使用浏览器打开http://localhost:10080
来访问Gitlab,初始登陆网站使用root帐户,用户名为root
,密码为:5iveL!fe
,登陆后须要当即修改密码。
这里解释一下各参数:
-d: 后台运行
-e:配置Gitlab运行的环境变量,这个参数很重要,具体有哪些环境变量,后面列举
-p: 端口转发规则
-v: 共享目录挂载,即docker容器内外数据共享
Gitlab的环境变量配置比较多,这里列举一下比较重要的Gitlab的环境变量:
localhost
,这个值会被Gitlab用来生成repo的连接,因此必需要设置。不然,在建立的repo中,会发现全部的repo连接都是以localhost
为hostname。80
22
。若是是在VPS上部署,这个值请使用别的端口,好比上面提到的10022
端口,不然会与VPS本来的SSH端口产生冲突,形成SSH没法登陆VPSdisable
, daily
, weekly
, monthly
四个可选值,默认为disable
。建议打开自动备份/home/git/data/backups
其余的参数请参考repo中的README.md.