如何使用 Docker 搭建 GitLab 站点

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 所必须的环境,需要安装。执行下面的命令即可。

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

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

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官方给出的包文件,执行下面的命令进行下载安装。

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

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

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了,使用下面的命令进行安装。

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

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

下载 GitLab docker镜像

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

sudo docker pull gitlab/gitlab-ce

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

启动Gitlab

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

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)在浏览器中访问即可。

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 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务提供的免费实验室进行实验,今天我们就使用他提供的实验机进行搭建。

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

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

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

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

配置GitLab

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

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

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

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

总结

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

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何升级到Ubuntu 16.04 LTS

警告:与操作系统主要版本之间的几乎任何升级一样,此过程存在故障,数据丢失或软件配置损坏的固有风险。强烈建议进行全面备份和广泛测试。

2692

Debian云工具

最近,我根据Ubuntu提供的标准开发了一套云工具,并将它们移植到了Debian系统中。下面让我们来看看如何在云端使用debian!

2666
来自专栏Java学习之路

虚拟机工作站创建虚拟机并安装Linux教程 一丶什么是Linux:二丶为什么要学Linux:三丶安装虚拟机工作站和初始化虚拟机:四丶安装Linux操作系统

前言: 今天开始学习一下Linux,之前早就想看,但是一直没时间,最近把其他知识整理完了,终于有时间来看一下Linux了。 本节只是安装虚拟机工作站,虚拟机...

3885
来自专栏程序员叨叨叨

听说你windows任务栏很卡

最近,身边使用windows系统的朋友发现,系统的任务栏总是很卡,下面我们来看看问题的解决方法:

902
来自专栏小白课代表

软件分享 | AutoCAD 2006 安装教程

5、输入序列号:191-75444444,姓氏名字组织随便输,比如:公众号小白课代表最棒

1033
来自专栏IT笔记

公司内网搭建代理DNS使用内网域名代替ip地址

一般在企业内部(科帮网),开发、测试以及预生产都会有一套供开发以及测试人员使用的网络环境。运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口...

4788
来自专栏杨建荣的学习笔记

Oracle Data Guard压缩归档效果对比(r12笔记第26天)

Oracle Data Guard对归档的传输提供了很多辅助的选项,这个可 以通过log_archive_dest_x看到。 一般说这类的优化,如果...

3507
来自专栏后端技术探索

Nginx从听说到学会(2.应用场景和常用命令)

传统的web项目,一般都将静态资源存放在 webroot的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 ...

1032
来自专栏北京马哥教育

5分钟了解MariaDB创建角色功能

Grant Role? 创建角色,oracle很早就支持创建角色的功能了,而MySQL5.7版本依然尚不支持。目前,只有MariaDB10.0/10.1版本里支...

2905
来自专栏喵了个咪的博客空间

PhalApi-Xhprof -- Facebook开源的轻量级PHP性能分析工具

#PhalApi-Xhprof -- Facebook开源的轻量级PHP性能分析工具 ? ##前言 Facebook开源的轻量级PHP性能分析工具,非常爽希望大...

3227

扫码关注云+社区