常见私有Git仓库对比
gitea:轻量级,专注代码管理,实现CI/CD等操作需要与其他组件配合。
gitlab-ce:功能全面,最终选择这个。
bitbucket:功能全面,可以与jira,confluence等Atlassian的组件配合使用。缺点是需要破解。
具体安装
选用最简单的docker安装方式。系统采用centos7。
官方安装文档地址为:https://docs.gitlab.com/omnibus/docker/
有几个坑要踩,这里着重说一下重点需要关注的避坑点
1. 选择安装目录
根据自己的硬盘分配,选择需要进行映射的卷的位置。需要映射出三个卷,分别用于存储gitlab的数据、日志和配置文件。
本地路径 | 容器内路径 | 说明 |
$GITLAB_HOME/data | /var/opt/gitlab | 数据目录 |
$GITLAB_HOME/logs | /var/log/gitlab | 日志 |
$GITLAB_HOME/config | /etc/gitlab | 配置 |
坑1、记得这里一定要设置好$GITLAB_HOME,或者在后面的所有路径都写成绝对路径,切换shell的时候环境变量会失效,切记不要讲系统装到根目录下了
# 将上述需要映射的三个卷放到统一的目录下,便于后续管理,具体的位置根据自己的情况修改。
export GITLAB_HOME=/u01/gitlab
2. 通过Docker Engine直接运行
(使用docker-compose编排运行的方式大同小异,参照官方文档)
坑2、提前规划好端口。容器内外端口最好保持一致,便于后续的设置,不然后面会有很多坑。
至少需要两个端口:
- http(或者https)端口,用于网站登录和http协议的代码同步;
- ssh端口,用于ssh方式的代码同步。
我的规划(每个人根据自己的需要修改):初期使用http和ssh两个协议,https后续再说。http端口走8060,https协议预留8061,ssh端口走8062。
坑3 hostname是容器内机器的机器名,这个可以根据自己的需要写,不要有特殊字符,否则进入容器的时候很容易出些奇怪的问题。
可以提前去docker hub上查找需要安装的版本,https://hub.docker.com/r/gitlab/gitlab-ce/tags
我这里安装14.10.3-ce.0。镜像比较大有两个多G,最要提前配置国内源加速,建议使用docker pull提前将镜像下载下来。
sudo docker run --detach \
--hostname gitlab \
--publish 8061:8061 --publish 8060:8060 --publish 8062:8062 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:14.10.3-ce.0
3. 修改配置文件
容器启动之后,修改配置文件,对访问地址和端口等进行配置,配置文件地址为 GITLAB_HOME/config/gitlab.rb,注意坑1,$GITLAB_HOME要指向你自己设置的卷映射路径。
vim /u01/gitlab/config/gitlab.rb
需要修改的内容有:
- external_url ‘http://你的访问地址:端口(上面步骤确定的http端口)’
坑4:如果只是内网使用,这里可以用IP,否则可以设置为外网域名,注意,这里修改端口后,重新加载配置后,docker容器内的端口也会跟着修改,所以端口映射要设置成内外一致。关于内外端口一致的另一个主要原因最后总结为坑5,见最后 - gitlab_rails[‘gitlab_shell_ssh_port’] = 8062 #打开这行注释,将ssh端口修改为你规划的值
- gitlab_rails[‘gitlab_shell_git_timeout’] = 800 #打开这行注释
重新加载配置,完成安装
配置完成后,需要进入容器内部,重新加载配置文件
# 进入容器内部
docker exec -it gitlab /bin/bash
#在容器内部执行重新加载配置的脚本
gitlab-ctl reconfigure
初始密码登录,进行系统配置
系统安装完成后,会有一个默认的root用户,密码明文放在$GITLAB_HOME\config\initial_root_password这个文件里面,24小时有效。
用默认密码登录,然后修改密码,完成安装。
cat /u01/gitlab/config/initial_root_password
坑5:为什么要将docker内的地址和映射地址改为一致(如果要做外网映射,也要设置成一致)?
系统部署完成后,拷贝代码仓库的地址时,http地址用到的就是external_url,ssh地址用到的就是external_url的域名+gitlab_shell_port对应的端口。如果内外端口不一致,需要每次修改这个端口。
gitlab的使用方法汇总再另出文档整理。