上一篇讲了Git的操作和管理,我们在Github上也试着进行了Git的操作以及Git仓库的管理。但是我们很多的工作不方便公布到Github上,那如何搭建自己的Git远程服务给自己或者团队内部使用呢?为了免去本地安装配置Git繁琐,我们可以通过容器的方式来部署。
第一步:安装docker引擎
我们这里使用centos7.5作为容器宿主机操作系统。
首先卸载centos7.5自带的旧版本docker引擎:
$sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装 container-selinux ,这个rpm包不在基础安装包中,它是EPEL源中的一个组件,可从阿里、清华、网易等镜像站下载,目前最新版为2.74。
$ wget https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/container-selinux-2.74-1.el7.noarch.rpm
$ sudo yum install container-selinux-2.74-1.el7.noarch.rpm
安装指定版本的docker引擎。可以在国内各开源镜像站查找docker-ce,找到对应版本下载安装,这里选取docker-ce-18.09.2版本进行安装。
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.2-3.el7.x86_64.rpm
$ sudo yum install docker-ce-18.09.2-3.el7.x86_64.rpm
安装成功。使用如下命令开启启动容器。
$ sudo systemctl enable docker
$ sudo systemctl start docker
# 查看容器版本
$ sudo docker version
第二步:安装配置gitlab镜像
当然我们可以自己制作gitlab镜像。为了方便起见这里使用dockerHub中的Gitlab官方的社区版容器镜像:
$ docker search gitlab
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
gitlab/gitlab-ce GitLab Community Edition… 2457 [OK]
拉取星数最多的镜像:
$ docker pull gitlab/gitlab-ce
在dockerHub中查看Gitlab容器的Dockerfile 查看需要挂载的文件目录有:
/etc/gitlab 配置文件
/var/log/gitlab 日志
/var/opt/gitlab 数据文件
配置宿主机路由转发:
$ vi /etc/sysctl.conf
* net.ipv4.ip_forward = 1
$ sysctl -p
或者运行:
sysctl -w net.ipv4.ip_forward=1
运行容器(本次启用是为了生成配置文件。)
$ docker run -d \
-h gitlab.nero.com \
-p 80:80 \
--name gitlab-t1 \
-v /root/gitlab/config:/etc/gitlab \
-v /root/gitlab/logs:/var/log/gitlab \
-v /root/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce
进入 /root/gitlab/config 修改配置文件 gitlab.rb,查找external_url,修改为
# external_url 'GENERATED_EXTERNAL_URL'
external_url 'http://gitlab.nero.com:10801'
修改并保存之后,删除该容器:
$ docker rm -f gitlab-t1
修改宿主机 /etc/hosts 文件,添加一行:
192.168.220.129 gitlab.nero.com
# 其中 192.168.220.129 为宿主机IP,域名可以自定义。
指定端口并启动新容器:
$ docker run -d \
-h gitlab.nero.com \
-p 10801:10801 \
-p 10802:22 \
-p 10803:443 \
--name gitlab \
--restart unless-stopped \
-v /root/gitlab/config:/etc/gitlab \
-v /root/gitlab/logs:/var/log/gitlab \
-v /root/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce
运行成功。
在浏览器页面中输入URL:
http://192.168.220.129:10801
# IP 为宿主机IP
成功访问搭建的gitlab服务结果如下:
第三步:配置gitlab并上传代码
默认用户为root ,设置完成密码之后就可以登录了,然后点击上面菜单中的"小扳手"图标创建用户。
使用新用户登录:
在gitlab中新建group
新建project
配置ssh key
配置宿主机环境变量 。
$ vi ~/.bash_profile
* GIT_SSH_COMMAND="ssh -p 10802"
$ source ~/.bash_profile
# 其中 10802 端口为启动容器命令时映射 22的端口
如果使用ssh key无法git clone,可以参考如下命令:
GIT_TRACE=1 GIT_SSH_COMMAND="ssh -p 10802" git clonegit@gitlab.nero.com:nexusim/skdlf.git
点击进入project中,按照提示完成git push操作。
执行命令如下:
$ cd existing_folder
$ git init
$ git remote add origin git@gitlab.nero.com:nexusim/proname2.git
$ git add .
$ git commit -m "Initial commit"
$ git push -u origin master
最后完成代码上传。
工欲善其事必先利其器,完成了Git远程服务的搭建,我们就有了有力的CI利器,为我们的持续集成的工作铺平了道路。