Centos通过docker方式安装Gitlab

常见私有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的使用方法汇总再另出文档整理。

猜你喜欢

转载自blog.csdn.net/wangjm1982/article/details/124941285