基于Gitlab搭建Git服务器

959 阅读2分钟
前言

GitLab 是一个用于在线代码仓库托管软件,使用Git作为代码管理工具,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。

由于目前团队缺失一个git管理工具,于是基于docker搭建了Gitlab服务,本文记录此次搭建一些简单过程。

一、安装环境
  • 系统:redhat 7
  • Docker: 19.03.8
  • 需求内存:8GB
二、搭建 GitLab
1、查找GitLab镜像
docker search gitlab

查询结果:

查询gitlab.png

2、拉取gitlab docker镜像

对于以上查询结果,我选取 社区版(gitlab/gitlab-ce)进行使用,因为免费且功能足够满足日常git服务器需求。

docker pull gitlab/gitlab-ce:latest
3、导出、导入gitlab-ce镜像包

由于公司内网环境,所以需要将镜像包导出再导入到内网服务器中。

docker save -o gitlab.tar gitlab/gitlab-ce:latest  //导出到本地当前文件夹
docker load < gitlab/gitlab-ce  // 进入所在文件夹导入image
docker images // 查看
4、建立网络(非必须)

考虑后续可能其他容器或是其他访问,建立网络通信,但此时未用到。

docker network create gitlab_net
5、启动镜像
  docker run   
      -itd
      --net=gitlab_net 
      -p 9443:443  -p 80:80 -p 9922:22
      -v /opt/local/gitlab/etc:/etc/gitlab   
      -v /opt/local/gitlab/log:/var/log/gitlab 
      -v /opt/local/gitlab/opt:/var/opt/gitlab 
      --restart always  
      --privileged=true  
      --name gitlab-prod  
      gitlab/gitlab-ce

命令说明:

-itd:
    -i  以交互模式运行容器,通常与 -t 同时使用命令解释:
    -t  为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -d  后台运行容器,并返回容器ID
    
--net=gitlab_net:
    指定网络模式
  
-p 9443:  
    将容器内443端口映射至宿主机9443端口,这是https的端口
-p 80:80 
    将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p 9922:22
    将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
    
 -v /opt/local/gitlab/etc:/etc/gitlab    -v /opt/local/gitlab/log:/var/log/gitlab 
 -v /opt/local/gitlab/opt:/var/opt/gitlab :
    将容器目录挂载到宿主机/opt/local/gitlab目录下,方便修改及数据持久化。
    
 --restart always :
    容器自启动
    
--privileged=true  :
    让容器获取宿主机root权限
    
--name gitlab-prod :
    设置容器名
    
 gitlab/gitlab-ce:
    使用镜像
6、修改gitlab.rb
  vi /opt/local/gitlab-IS/etc/gitlab/gitlab.rb // 打开gitlab.rb文件
      //external_url设置
      //将external_url改为“http://10.10.129.144”
      
      //ssh主机IP设置
      //gitlab_rail['gitlab_ssh_host']='10.10.129.144'
      
      //ssh端口设置
      //gitlab_rail['gitlab_shell_ssh_port']=9922
    :wq  //保存退出
7、进入gitlab容器配置生效,重启
      docker exec -it gitlab-prod /bin/bash   // 进入容器
      
      gitlab-ctl reconfigure    // 配置重新生效
      
      gitlab-ctl restart       // 重启gitlab 
      
      exit                 // 退出容器
8、查看检测

浏览器输入IP正常查看,我服务器IP是http://10.10.129.144,所以浏览器输入http://10.10.129.144正常查看。 第一次访问默认是root账户,会需要修改密码。

若无意外安装就成功了,如果打开不了,可查看端口、防火墙是否打开、容器是否运行。

// 查看所以端口
netstat -ntlp  
​
​
// 防火墙
启动: systemctl start firewalld
查看状态: systemctl status firewalld 
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
​
// 容器
docker container ls
​
9、其他遇到的问题

刚在新的linux上安装Docker-CE,后运行docker run hello-world报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决办法
$ systemctl daemon-reload
三、其他使用配置

gitlab客户端有关邮件的配置、关闭注册功能、备份配置、CI/CD功能配置、ssh key配置等等

最后

谨以此做笔记,方便开发测试