前言
GitLab 是一个用于在线代码仓库托管软件,使用Git作为代码管理工具,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。
由于目前团队缺失一个git管理工具,于是基于docker搭建了Gitlab服务,本文记录此次搭建一些简单过程。
一、安装环境
- 系统:redhat 7
- Docker: 19.03.8
- 需求内存:8GB
二、搭建 GitLab
1、查找GitLab镜像
docker search gitlab
查询结果:
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配置等等
最后
谨以此做笔记,方便开发测试