在前面的实践记录中,我们使用的示例项目都是我在Github上的,其实除了网络稍微有点慢外也没有什么问题。但是一般在我们的工作中,都会搭建一个公司内部使用的Git服务器,而比较常见的就是搭建一个GitLab服务器。目前我所在的公司里面也是采用的自建GitLab,只是使用的是传统的软件源安装方式而不是基于容器化。所以,本篇实践记录就是自己动手来搭建一个基于Docker的GitLab。
一、前言概要
绝大多数时候我们只把GitLab作为一个分布式的Git代码管理工具,但其实它还应该发挥出更多的作用。本篇中主要记录的是基于Docker搭建GitLab服务,而至于它的基本使用以及它应发挥的更多作用,我预计会在后续的实践中运用起来。接下来我们步入正题,准备安装GitLab。
二、安装部署GitLab服务
2.1 下载镜像
GitLab有社区版(CE)与企业版(EE)之分,这里我们采用社区版。首先按照我的习惯,在确定使用什么镜像后,我就会直接先pull镜像到宿主机上,使用如下命令:
$ docker pull gitlab/gitlab-ce:latest
这个镜像有点大,我们需要耐心等待一段时间。
等到镜像pull完成后,你肯定知道接下来我要做什么。没错,接下来我们就要查看一下镜像的一些详细信息。在这之前,我们先来看下刚才的镜像,1.78GB,也的确够大的。
然后执行如下命令查看镜像详细信息:
$ docker inspect gitlab/gitlab-ce:latest
部分截图如下:
我一般比较关心的是其暴露的端口及数据卷目录,可以看到,有几个我们需要用来做持久化的数据卷。不知道为什么,在单机环境中我特别喜欢采用映射主机目录的方式来进行有状态服务的数据持久化。
执行如下命令,在宿主机创建三个挂载目录。当然,这个目录是可以自动创建的。
$ mkdir -p /docker_volume/gitlab/config
$ mkdir -p /docker_volume/gitlab/data
$ mkdir -p /docker_volume/gitlab/logs
接着我们准备启动容器。
2.2 docker命令启动容器
$ docker run -d --restart=unless-stopped -p 30020:443 -p 30021:80 -p 30022:22 \
-v /docker_volume/gitlab/config:/etc/gitlab \
-v /docker_volume/gitlab/data:/var/opt/gitlab \
-v /docker_volume/gitlab/logs:/var/log/gitlab \
--name gitlab gitlab/gitlab-ce:latest
执行如下命令查看我们刚才启动的容器状态:
$ docker container ls -f name=gitlab
接下来我们将通过rancher来管理容器,这里先删除容器:
$ docker container rm -f gitlab
2.3 rancher中部署GitLab服务
在往期的 docker决战到底 系列文章中我们已经在rancher中部署过好几次服务了,相信你已经能够熟练使用了,只需根据上面通过docker命令启动容器的方式映射到rancher服务部署的操作中即可。大致截图如下:
到此,我们的GitLab服务已经运行在容器中,我们可以随时删除或重新启动容器而不用担心我们的数据会丢失,因为我们已经把数据持久化到了我们的宿主机/docker_volume/gitlab目录中,如果你想进行一下自定义配置也可以在/docker_volume/gitlab/config目录下直接进行更改。下面,我们来访问一下GitLab的可视化管理界面。
三、可视化管理GitLab
3.1 初始化
浏览器访问:http://192.168.225.129:30021,初次访问需要重新设置root账号的密码,这里密码我们假定设置为123456(不能太简单,不然不能设置成功)
密码设置成功后,即可采用root账号登录。登录后主页如下图:
3.2 创建项目
点击主页的 [Create a project]创建一个项目,当然在实际工作中使用时还需要先进行一系列用户权限等设置。
3.3 通过Git工具管理项目
在我们本地机器上通过git客户端进行操作
$ git clone http://192.168.225.129:30021/root/test.git/
输入用户名root和密码123456即可克隆成功项目,然后把需要的项目提交推送上去即可,相信每一个开发人员都会操作,这里不再过多介绍。
更多操作可以查看GitLab官方文档
四、使用小结
本篇实践记录我们演示了怎么通过容器部署GitLab以及其简单的使用,整体来说比较简单。在后续实践中,我们当然不会只把它作为一个Git版本管理工具来使用,可能更多的还是会接触它的CI/CD这一块功能实践。如果你有什么疑问或者文中有什么错误的地方,欢迎在留言区留言。
前文导航
Docker决战到底(一) 虚拟机中安装ubuntu系统
Docker决战到底(二) Docker环境搭建
Docker决战到底(三) Rancher2.x的安装与使用
Docker决战到底(四) Jenkins的安装与使用
Docker决战到底(五) 制作自己的Jenkins镜像
Docker决战到底(六) 制作自己的Maven镜像
Docker决战到底(七) 使用多阶段构建Spring Boot应用镜像
Docker决战到底系列全为本人wendell_dev原创,转载请注明来源。
PS:不知道为什么上一篇文章 Docker决战到底(七) 使用多阶段构建Spring Boot应用镜像 被简书锁定了,不知道哪里违规了,正在通过邮件反馈中。想要查看的小伙伴可移步至我的CSDN博客。
网友评论