Techeek's Studio.

使用 Docker 搭建 GitLab 站点

字数统计: 2.7k阅读时长: 10 min
2018/10/23

GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

有人可能要问,Github已经很好用了,为什么我还要用GitLab呢?为什么我还要自己搭建GitLab呢?那是因为Github有一个小问题,私有仓库收费。这对于乐于分享的码农来说倒影响不大,但是如果你负责的是一家企业或者一个组织,可能你的代码不允许公开,只能内部使用,使用Github将可能会造成你的源代码泄漏。那么就非常有必要自建一个Git服务器了。

本教程将教你在腾讯云CVM云服务器上搭建 GitLab 站点,以方便自建的组织使用,一起来看看吧。这里推荐三种方法进行安装,第一种是使用apt包管理器进行安装,第二种是使用docker进行安装。因为apt包安装方式在国内实在太慢了,docker优势就很明显了,可以快速创建和销毁,数据还能大部分保留。对服务器有需要的同学去腾讯云开发者实验室免费领取实验机器动手实践。当然,感兴趣的小伙伴也可以去购买一台服务器以便长期学习使用。最后一种,也是我推荐使用的方案,使用腾讯云的容器服务进行部署,方便快捷,不需要写代码,即可快速上手部署。

使用apt进行安装

安装 GitLab 环境所需依赖

在安装GitLab之前,我们需要安装一些依赖,以确保GitLab能够正常运行。这里我们以Ubuntu Server 16.04.1 LTS版本为例,首先我们需要更新apt包,可以使用sudo apt-get update命令进行更新,接下来需要安装curl、openssh-server、ca-certificates这三个依赖包,curl是一个文件综合传输工具,openssh是ssh的开源解决方案,ca-certificates是ca证书生成软件,这些软件都是 GitLab 所必须的环境,需要安装。执行下面的命令即可。

1
2
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates

输入完成后,你会看到一系列的输出,耐心等待即可完成安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ubuntu@VM-0-7-ubuntu:~$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5933 0 5933 0 0 3500 0 --:--:-- 0:00:01 --:--:-- 3500
Detected operating system as Ubuntu/xenial.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/gitlab_gitlab-ee.list...done.
Importing packagecloud gpg key... done.
Running apt-get update... done.

The repository is setup! You can now install packages.

添加GitLab存储库及安装Gitlab

官方的apt包管理器是不带Gitlab的,我们需要下载Gitlab官方给出的包文件,执行下面的命令进行下载安装。

1
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

等待一系列的输出后,我们就可以继续安装Gitlab了。执行下面的命令开始安装。由于Gitlab的服务器在国外,下载较为缓慢,文件比较大,安装时间较长,请耐心等待。

1
2
3
4
5
6
7
8
9
10
11
ubuntu@VM-0-7-ubuntu:~$ sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
gitlab-ee
0 upgraded, 1 newly installed, 0 to remove and 199 not upgraded.
Need to get 514 MB of archives.
After this operation, 1,611 MB of additional disk space will be used.
Get:1 https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu xenial/main amd64 gitlab-ee amd64 11.4.0-ee.0 [514 MB]
1% [1 gitlab-ee 4,523 kB/514 MB 1%] 2,727 B/s 2d 3h 50min 54s

等系统自动安装完成后,我们就可以访问你CVM分配的IP地址啦,下一步操作请看配置GitLab步骤进行配置。

使用docker进行安装

安装docker

这里我们以Ubuntu Server 16.04.1 LTS版本为例,首先我们需要更新apt包,可以使用sudo apt-get update命令进行更新,接下来就可以开始安装docker了,使用下面的命令进行安装。

1
2
sudo apt-get update
sudo apt-get install docker.io -y

等待几分钟,我们的docker就安装好了,接下来我们需要下载 GitLab 的镜像。

下载 GitLab docker镜像

这里我们下载社区版本的docker镜像,如需其他版本的镜像,请参考官方链接。我们使用docker pull命令进行下载,具体命令如下:

1
sudo docker pull gitlab/gitlab-ce

执行完这个命令后,你需要耐心等待一段时间,因为下载过程十分漫长。等执行完成,就可以继续啦!

启动Gitlab

接下来就可以开始执行启动Gitlab的命令了,如果我们只在本机测试使用的话,将hostname替换为localhost。如果需要让外部系统也能访问的话请使用你服务器的IP地址,如果你绑定了域名,那么就填写你的域名。

1
2
3
4
5
6
7
8
9
sudo docker run --detach \
--hostname 你服务器的IP \
--publish 443:443 --publish 80:80 --publish 21:22 \
--name gitlab-ce \
--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

值得注意的是,因为我们22端口已经被ssh工具占用,所以这里我将docker的22端口指向服务器的21端口,如果你的22端口没有被改动,请填写22端口即可。

第一次启动非常慢,请再次耐心等待,我们可以使用sudo docker ps命令查看当前所有Docker容器的状态。当你的服务的状态由starting变为运行时间时,说明成功启动了。我们直接使用上面配置的IP地址(如localhost)在浏览器中访问即可。

1
2
3
4
ubuntu@VM-0-7-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7de775b2502c gitlab/gitlab-ce:latest "/assets/wrapper" 13 seconds ago Up 12 seconds (health: starting) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:21->22/tcp gitlab

等系统正常运行后,我们就可以开始配置GitLab了,具体操作请看配置GitLab步骤进行配置。

使用腾讯云容器服务创建(推荐)

自建容器服务器难免会遇到各种问题,这里推荐大家使用使用腾讯云的容器服务,腾讯云容器服务(Tencent Kubernetes Engine ,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务提供的免费实验室进行实验,今天我们就使用他提供的实验机进行搭建。

1540347421223

由于我已经进行了一次试验了,所以截图中显示的为倒计时,大家可以按照我的步骤进行部署。点击申请免费集群后,系统展示如图。

1540347552356

因为我们要部署新的镜像,所以需要新建服务,我们点击左侧栏的服务按钮。然后再点击新建服务,如图所示。

这里有几个填写的要点,服务名称这里自行填写即可,所在地域请选择你创建集群的地域,运行集群选择系统默认的集群,数据卷我们暂不填。运行容器名称这里也自行填写,镜像请填入ccr.ccs.tencentyun.com/techeek/gitlab-ce,由于腾讯云没有提供镜像,这里是作者自行上传的gitlab-ce(Gitlab社区版)的官方镜像文件,大家可以直接使用。镜像版默认为latest,CPU/内存限制这里建议大家尽可能的分配多一些,如果你是自行购买的集群,可以将CPU限制及内存限制改大些。我这里是自己创建的集群,填写CPU限制:1-4,内存限制:4096-8192。这里大家按照自己集群给定的CPU和内存填写。环境变量默认即可。接下来在访问设置,请按照图中设置即可。然后我们点击创建按钮。

1540350677914

系统会开始创建你的镜像,创建完成后,点击服务按钮,系统给出了访问的IP,下一步操作请看配置GitLab步骤进行配置。

配置GitLab

不论你是通过apt方式进行安装,还是通过docker进行安装。访问你所在服务器的IP后,你就能看到这个页面了,在这个页面,我们将配置GitLab。第一步,GitLab将要求我们创建管理员的密码,我们填写密码即可。

1540349995409

等输入完管理员密码后,系统将自动跳转到登录页面,在用户名界面,我们输入root在密码界面,我们输入你刚设定的管理员的密码。这时我们就进入了后台页面,现在我们就可以更改GitLab的各种设置了!

1540351415280

当然,这里只是更改设置,我们最主要目的还是使用GitLab的Git功能,在注册页面,我们注册一个创建项目的账户。

1540351527475

然后,就如同使用GitHub一样,我们可以开始创建自己的项目进行管理啦!

1540351578845

总结

这里我们教会了大家使用三种方案进行部署GitLab,个人还是推荐第三种使用腾讯云容器服务 TKE进行稳定、安全、高效、灵活的方式搭建。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的 CBS、CLB 等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。

如果自己无条件或不想搭建Git服务,欢迎大家使用免费的腾讯Git代码托管(工蜂)服务,腾讯云为开发者提供基于 Git 的在线代码托管工具,包含代码提交/存储/下载/复刻/分支/历史/比对/合并等功能。可一站式完成对代码及代码质量管理,项目及项目人员管理,大大提升研发效率。有任何使用问题欢迎大家留言评论哦!

CATALOG
  1. 1. 使用apt进行安装
    1. 1.1. 安装 GitLab 环境所需依赖
    2. 1.2. 添加GitLab存储库及安装Gitlab
  2. 2. 使用docker进行安装
    1. 2.1. 安装docker
    2. 2.2. 下载 GitLab docker镜像
    3. 2.3. 启动Gitlab
  3. 3. 使用腾讯云容器服务创建(推荐)
  4. 4. 配置GitLab
  5. 5. 总结