继续本小结内容之前,你需要安装好docker环境,并自行学习完docker的基本使用

gitlab你知道吗

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

gitlab官方维护了gitlab相关的一系列镜像,具体可以到这里查看,传送门,整个教程我们会用到其中几个,现在看看了解下就可以了。

你可能也发现了,gitlab有两个版本gitlab-cegitlab-ee,这俩有啥区别呢,前者是社区版(Community Edition),后者是企业版(Enterprise Edition),社区版是完全免费的,企业版需要购买license。企业版license还分了3个档次,StarterPremiumUltimate,真的好贵,最便宜的$48/人/年,最贵的$1188/人/年,我想说一般公司估计都不会选择企业版,真的太贵了,别看错了,单位是美金。。。

不过一般情况下社区版gitlab-ce就够用了,我看我司用的就是GitLab Community Edition,也完全够用了,看起来功能跟全球最大的同性交友网站类似,简洁大方。想想是不是还有些小激动,自己马上要建立一个类全球最大同性交友网站的网站了。

社区版、企业版的具体区别可以看这里,传送门

gitlab安装

这里是gitlab安装官网文档,传送门,我们选择其他安装方式中的docker,传送门

拉取镜像

1
docker pull gitlab/gitlab-ce

运行镜像

运行的时候做了一些配置,主机名设置,端口映射,目录映射等,这里需要注意,端口如果有冲突,需要将宿主机端口(冒号前面的端口)改为其他的,宿主机目录(冒号前面的路径)需要手动建立。

1
2
3
4
5
6
7
8
9
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22: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 \
gitlab/gitlab-ce:latest

修改配置

文件/Users/ruitao/gitlab/config/gitlab.rb是gitlab的配置文件,我们需要对其中的几项稍作修改。

要修改的第一项是external_url,第二项gitlab_rails['gitlab_shell_ssh_port'],你可能要问了,为什么要设置这个,有什么用呢,在未设置的情况下,项目的ssh、http地址分别为:

1
2
git@gitlab.example.com:root/what.git
http://gitlab.example.com/root/what.git

可以看到,默认情况下使用了主机名--hostname gitlab.example.com,每个访问者都需要设置hosts才能访问到,这样特别麻烦。

另外,如果你对22端口映射做了变更,比如宿主机端口改为23,这样ssh协议的可能还是访问不了,需要我们设置gitlab_rails['gitlab_shell_ssh_port']参数,gitlab默认加上23端口。

具体变更点如下:

1
2
3
4
5
# external_url 'GENERATED_EXTERNAL_URL'
external_url 'http://{your ip}:{your port}'

#gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab_rails['gitlab_shell_ssh_port'] = 23

然后运行下面的命令,重新配置gitlab

1
docker exec -it gitlab gitlab-ctl reconfigure

执行成功之后,运行下面的命令重启gitlab即可

1
docker restart gitlab

访问

至此,安装成功了,访问http://{your ip}:{your port}就可以看到内容了,第一次进入会需要设置root密码,设置完成之后就可以尽情的蹂躏gitlab了。

常见问题

一般情况下,按照官网教程,可以很快的将gitlab服务启动起来,但是实际操作的时候,可能会碰到各种各样奇怪的问题,比如我在安装的时候就碰到了下面的问题。

MAC OS系统服务启动不起来

我的是MAC OS系统,发现gitlab一直启动不起来,看了日志,发现有个权限2770的问题,查了半天,也没查到优雅的解法。最后查到个办法,在目录映射的时候,宿主机目录选择运行gitlab的用户家目录$HOME,问题解决,比如我的家目录是/Users/ruitao

1
2
3
4
5
6
7
8
9
docker run --detach \
-h gitlab.example.com \
-p 443:443 -p 80:80 -p 23:22 \
--name gitlab \
--restart always \
-v /Users/ruitao/gitlab/config:/etc/gitlab \
-v /Users/ruitao/gitlab/logs:/var/log/gitlab \
-v /Users/ruitao/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest