共计 3745 个字符,预计需要花费 10 分钟才能阅读完成。
docker 用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全。
Gitlab 是目前比较流行的开源类 Github 代码管理平台。Gitlab 使用 Rails 开发,使用 PostgreSQL 或 MySQL 数据库,Redis 做缓存。一般自己搭建私有代码仓库,Gitlab 通常是首选。这里简单介绍一下 dockerized Gitlab。
Gitlab 的 docker 镜像早已有人做好了,并且维护相当不错。大家可以前往其 GitHub 仓库了解该镜像的情况。官方 repo 的 readme 中已经有详细的安装配置方案,这里我简单的梳理一下部署流程。
安装 Docker
这里以 Ubuntu 14.04 发行版为例,在 bash 中输入一下命令安装最新的 docker:
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,版本比较新,可以直接使用。
安装 docker-gitlab
使用如下命令可以使 Docker 下载对应版本的 Gitlab 镜像:
docker pull sameersbn/gitlab:7.5.3
上面的命令下载 7.5.3 版的 Gitlab,如果想下载最新版本,可以输入以下命令:
docker pull sameersbn/gitlab:latest
待下载完成后就算完成安装了。
也可以 Clone 刚才的提到的仓库,然后在本机上 build 镜像:
git clone https://github.com/sameersbn/docker-gitlab.git
cd docker-gitlab
docker build --tag="$USER/gitlab" .
注意上面最后一行命令结尾有一个 ”.” 符号,不要掉了。
安装 PostgreSQL
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 镜像启动的设置里面做相应的修改的话,这里的修改会让程序无法正常运行。
安装 Redis
同样,我们可以使用 docker 来安装 Redis:
docker pull sameersbn/redis:latest
然后启动它:
docker run --name=redis -d sameersbn/redis:latest
启动 gitlab
在最终启动 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 的环境变量:
- GITLAB_HOST: 这个是 Gitlab 服务器的 hostname,你需要将此设定为网站的域名或者 ip(不带端口号),默认值为
localhost
,这个值��被 Gitlab 用来生成 repo 的链接,所以必须要设置。否则,在创建的 repo 中,会发现所有的 repo 链接都是以localhost
为 hostname。 - GITLAB_PORT Gitlab 网站的访问端口,这里的设置要结合端口转发一起设置,否则会导致网站无法访问,默认值为
80
- GITLAB_SSH_PORT Gitlab 的 SSH 代码提交方式使用的 SSH 端口,这里的设置要结合端口转发一起设置,否则会导致代码无法提交,默认值为
22
。如果是在 VPS 上部署,这个值请使用别的端口,比如上面提到的10022
端口,否则会与 VPS 原本的 SSH 端口产生冲突,造成 SSH 无法登录 VPS - GITLAB_BACKUPS Gitlab 的自动备份配置,有
disable
,daily
,weekly
,monthly
四个可选值,默认为disable
。建议打开自动备份 - GITLAB_BACKUP_DIR Gitlab 自动备份目录,默认值为
/home/git/data/backups
其他的参数请参考 repo 中的 README.md.
更多 Docker 相关教程见以下内容:
Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
Ubuntu 14.04 安装 Docker http://www.linuxidc.com/linux/2014-08/105656.htm
Ubuntu 使用 VNC 运行基于 Docker 的桌面系统 http://www.linuxidc.com/Linux/2015-08/121170.htm
阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm
Ubuntu 15.04 下安装 Docker http://www.linuxidc.com/Linux/2015-07/120444.htm
在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm
在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm
Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-05/131887.htm