通过Docker安装GitLab(基于Centos7虚拟机)

本文选自微信公众号:superdiao的果壳

 

可能很多人没有听过GitLab这个东西,但是却听过GitHub(毕竟全球最大代码开源社区,即传说中的“全球最大同性交友网站”),注册免费用户即可在GitHub上免费托管开源代码,如需建立私有仓库必须付费。

事实上,两者非常相似,均属于第三方基于Git开发的代码版本控制产品,GitLab可以看成是个人版的GitHub,因为可以将自己的代码放到自己搭建的服务器上去,适合团队内部协作开发。这样一来安全性得到了保证,关键在于它还是免费的开源工具,同时它支持Web页面操作。

为了做到这一点,是否需要自己买或者租一个服务器呢?

答案是否定的。因为有了虚拟机,我们就有了自己的服务器,也就是说我们可以在虚拟机上搭建好GitLab,然后通过主机的浏览器去访问虚拟机的Ip地址就可以进行操作了。

那究竟以什么方式去搭建这个工具呢?有的朋友会觉得从网站下个包然后放到服务器上去安装,其实暂且不说这个过程麻烦(因为很多依赖包需要下载),下包的过程也是很漫长的,运气不好还会各种中断而导致失败,就算通过国内的镜像网站去下载也不是好办法。

此时,Docker的作用就发挥出来了。不熟悉Docker的可以参考本号的往期文章(《centos7安装docker》)。理由简单地来说就是已经有好心人将GitLab封装好成一个容器放到Docker官网上了,我们需要做的只是拉取它的Image下来到自己的服务器(也就是前面说的虚拟机),配合几条命令就可以搭建好了。

 

环境要求

最低配置要求:虚拟机最好2核或以上,内存至少2G
虚拟机数量:单个即可
通信要求:能够和主机进行通信,即互相ping通

 

1. 拉取镜像

[root@docker ~]# docker pull gitlab/gitlab-ce
#一般需要几分钟才能拉取完镜像

# 检查是否成功,看到gitlab/gitlab-ce就表示拉取成功
[root@docker etc]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    latest              5f5beb0b3864        4 days ago          1.89GB
python              3.7-slim-buster     5b03cb8574a0        2 months ago        179MB
postgres            latest              4a82a16ee75c        3 months ago        394MB
redis               4                   8280a2c45ce5        3 months ago        89.2MB

 

2. 运行镜像

# 将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级。
[root@docker ~]# mkdir -p /mnt/gitlab/etc 
[root@docker ~]# mkdir -p /mnt/gitlab/log 
[root@docker ~]# mkdir -p /mnt/gitlab/data

# 分别指定映射的端口,容器名字,挂载的卷(config,logs,data),镜像
[root@docker ~]# docker run -d \
-p 2222:22 -p 8080:80 -p 8443:443 \
--name gitlab \
-v /data/gitlab/config/:/data/gitlab/config/ \
-v /data/gitlab/logs/:/data/gitlab/logs/ \
-v /data/gitlab/data/:/data/gitlab/data/ \
gitlab/gitlab-ce:latest

# 检查是否运行成功,看到gitlab说明没问题:
[root@docker etc]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                      PORTS                                                               NAMES
d94a3639e722        gitlab/gitlab-ce:latest   "/assets/wrapper"        16 hours ago        Up 16 hours (healthy)       0.0.0.0:2222->22/tcp, 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp   gitlab

确认以上步骤无误后,以下操作均需要在容器内进行:

 

3. 配置GitLab

# 进入容器内
[root@docker ~]# docker exec -it gitlab /bin/bash
root@d94a3639e722:/# 
# 出现上面一行说明已经进入容器内了

# 容器内进行配置相关配置文件
root@d94a3639e722:/# vim /etc/gitlab/gitlab.rb

添加下面的配置(填写虚拟机Ip)

external_url 'http://192.168.38.132'

保存并退出

 

3.1 更新配置

root@d94a3639e722:/# gitlab-ctl reconfigure
# 该步骤至少需要几分钟

 

3.2 重启gitlab

root@d94a3639e722:/# gitlab-ctl restart
# 查看运行状态是否正常:
root@d94a3639e722:/# gitlab-ctl status
run: alertmanager: (pid 1193) 58248s; run: log: (pid 299) 58494s
run: gitaly: (pid 1202) 58247s; run: log: (pid 303) 58494s
run: gitlab-exporter: (pid 1209) 58247s; run: log: (pid 293) 58494s
run: gitlab-workhorse: (pid 1218) 58246s; run: log: (pid 287) 58494s
run: grafana: (pid 1227) 58246s; run: log: (pid 283) 58494s
run: logrotate: (pid 37010) 3202s; run: log: (pid 291) 58494s
run: nginx: (pid 1244) 58245s; run: log: (pid 289) 58494s
run: postgres-exporter: (pid 1249) 58244s; run: log: (pid 297) 58494s
run: postgresql: (pid 1268) 58244s; run: log: (pid 305) 58494s
run: prometheus: (pid 1278) 58243s; run: log: (pid 285) 58494s
run: redis: (pid 1286) 58243s; run: log: (pid 311) 58494s
run: redis-exporter: (pid 1422) 58243s; run: log: (pid 295) 58494s
run: sidekiq: (pid 1547) 58239s; run: log: (pid 309) 58494s
run: sshd: (pid 1554) 58239s; run: log: (pid 31) 58510s
run: unicorn: (pid 1561) 58237s; run: log: (pid 307) 58494s

 

如果配置得有问题,但是不想逐个去改,那么首先应该在容器外停止相应的容器:“docker stop gitlab”,再通过“docker rm containerID”这一命令删除指定容器,而镜像则不用动。containerID可以用“docker ps -a”获取。

至此配置算是完成了,相对于手动安装的方式(笔者尝试过,发现既繁琐又易失败),这种方式简单快捷且不容易出错。

当然,还需要通过浏览器来验证是否安装成功:

 

4. 验证安装

打开主机浏览器(需要等几分钟,即使出现502页面),输入网址:http://192.168.38.132:8080/(虚拟机IP加上端口号),填写相关信息就可以使用了!

 

 

总结一下安装的流程:

拉取镜像—>运行镜像—>配置GitLab—>验证安装。

 

希望本文对各位有所帮助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章