Centos通过docker方式安装Gitlab

本文介绍了如何在CentOS7系统上使用Docker安装GitLab,包括选择gitea、gitlab-ce和bitbucket之间的对比,强调了Docker安装过程中的关键步骤和需要注意的坑,如目录映射、端口配置、hostname设定以及配置文件的修改。文章还提醒了内外端口一致的重要性,并提到了初始密码的获取和系统配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值