gitlab简介
gitlab是一个仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,其架构如下图
nginx : web入口
database(postgresql,mysql)
redis 缓存,负责分发任务
sideiq:后台任务,主要负责发送电子邮件,任务需要来自redis
unicorn: 包含gitlab 主进程 gitlab-shell 用于ssh交互
gitlab-workhorse:反向代理服务器,可以处理与unicorn 无关的请求,处理git pull/push请求,处理到unicorn 的连接 gitaly 后台服务,用于处理GitLab发出的所有git调用
大致介绍完gitlab后,以下就开始通过docker 容器快捷搭建gitlab应用
下载gitlab镜像
docker pull gitlab/gitlab-ce
Using default tag: latest
latest: Pulling from gitlab/gitlab-ce
e80174c8b43b: Pull complete
d1072db285cc: Pull complete
858453671e67: Pull complete
3d07b1124f98: Pull complete
e7419c4b508e: Pull complete
69df234f2343: Pull complete
d35398dd029b: Pull complete
73a46c7023f6: Pull complete
6ba4c12a7e2f: Pull complete
56e2c0315c67: Pull complete
Digest: sha256:ebc6ee9faf326a5b44db94e3c7f3012ffa123b68f23b317fbb9323b3701f832a
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
创建数据目录
保证数据和服务分离,将配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外
mkdir -p /srv/gitlab/config
mkdir -p /srv/gitlab/logs
mkdir -p /srv/gitlab/data
docker run gitlab
docker run --detach \
--hostname gitlab.example.com \
--publish 8443:443 --publish 8880:80 --publish 8222:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--privileged=true \
gitlab/gitlab-ce:latest
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9839e1602833 gitlab/gitlab-ce:latest "/assets/wrapper" 2 minutes ago Up 2 minutes (health: starting) 0.0.0.0:8222->22/tcp, 0.0.0.0:8880->80/tcp, 0.0.0.0:8443->443/tcp gitlab
参数说明
–hostname gitlab.example.com: 设置主机名或域名
–publish 8443:443:将http:443映射到外部端口8443
–publish 8880:80:将web:80映射到外部端口8880
–publish 8222:22:将ssh:22映射到外部端口8222
–name gitlab: 运行容器名
–restart always: 自动重启
–volume /srv/gitlab/config:/etc/gitlab: 挂载目录
–volume /srv/gitlab/logs:/var/log/gitlab: 挂载目录
–volume /srv/gitlab/data:/var/opt/gitlab: 挂载目录
–privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限
以上数据目录主要是配置目录,日志目录,数据库文件目录
修改配置
如果已经做过域名解析(自己玩的话,改hosts文件就行了),则无需修改就可以通过域名直接使用,如果要通过ip访问,并通过ip访问git仓库,则需要修改如下配置文件
vim /srv/gitlab/config/gitlab.rb
找到# external_url 'GENERATED_EXTERNAL_URL',删除 #,并将GENERATED_EXTERNAL_URL改为要使用的ip如http://192.168.3.52 ,基本功能就可以使用了,如果要配置邮件服务,ldap,移步(https://docs.gitlab.com/ee/install/installation.html#advanced-setup-tips),扩展功能应有尽有,gitlab 8.17之后还提供了除ruby之外的其他语言实现,如go,nodejs,有语言偏执症的可以一顿操作了
浏览器访问
如图可以访问了
参考文献
便捷搭建:https://segmentfault.com/a/1190000019772866
gitlab:https://docs.gitlab.com/ee/install/installation.html#1-packages-and-dependencies