在现代软件开发中,源代码管理与持续集成(CI/CD)系统是基础设施中不可或缺的一环。虽然 GitHub、GitLab.com 和 Gitee 等平台已经提供了现成的服务,但在以下场景中,自建 GitLab 仍然具有明显优势:
  • 数据隐私:敏感代码无法托管在第三方平台,自建服务器可最大限度保障源代码安全。
  • 网络稳定性:企业内网或国内访问国外平台速度慢,自建服务更快更稳定。
  • 可定制性强:可以按需启用/关闭功能模块,满足企业流程。
  • 学习 DevOps 的理想环境:动手搭建 GitLab + Runner 是深入理解 CI/CD 流程的最佳方式。
本文将完整记录如何在 Ubuntu 服务器上通过 Docker 快速部署 GitLab 社区版,并完成 GitLab Runner 的注册与配置,最终实现完整的流水线任务自动执行。

一、部署环境与资源需求

📌 系统环境与软件依赖

  • 操作系统:Ubuntu 22.04 LTS
  • 安装方式:使用 Docker + Docker Compose 部署 GitLab CE 与 GitLab Runner
  • 组件版本:gitlab/gitlab-ce:gitlab/gitlab-runner:alpine
 

📌 服务器硬件要求(建议配置)

项目
最低要求
建议配置
磁盘空间
40 GB(含 Runner 与 CI 缓存)
100 GB 或更多
内存
4 GB(最低)
8 GB 或更多
CPU
双核
4 核或更多,频率 >= 2.5GHz
网络
稳定公网 IP,支持端口转发
建议启用防火墙规则保护端口
⚠️ 注意:GitLab CE 本身较重,占用资源较大,部署前务必预留足够的系统资源,特别是内存和磁盘空间。
 

二、环境准备与前置条件

在正式部署 GitLab 之前,确保以下环境配置已经就绪:

✅ 安装并验证 Docker 与 Docker Compose

✅ 邮件传输代理(MTA)

GitLab 不内置邮件服务,用于账号验证、流水线通知等场景。推荐安装 Postfix:
或者也可跳过邮件配置,后续在 GitLab 配置中关闭邮件通知功能。

✅ 主机域名配置

确保服务器具备一个可被外部访问的 主机名或公网 IP,请勿使用 localhost
 

其他一些注意事项

  • Windows 版 Docker 尚未获得官方支持,因为其镜像存在已知的卷权限兼容性问题以及其他潜在的未知问题。
  • 不要在 Kubernetes 中部署 GitLab Docker 镜像,因为它会造成单点故障。如果想在 Kubernetes 中部署 GitLab,需要改用 GitLab Helm Chart 或 GitLab Operator。
  • 默认情况下,GitLab 使用端口 22 通过 SSH 与 Git 交互。
 

三、开始部署 GitLab 服务(Docker 方式)

🐳 使用 Docker Compose 部署 GitLab CE

1、选择镜像版本:访问 Docker Hub GitLab CE 镜像列表,建议选择稳定版本。
notion image
2、编写 docker-compose.yml
3、启动服务:
或使用传统 Docker 命令:
tips: 如果在国内网络环境下载镜像很慢或拉取异常, 需要自行更换docker镜像源。
 
4、验证 GitLab 状态:
成功示例输出如下:

🎉 访问 GitLab 管理页面

浏览器访问 http://<你的服务器 IP>,首次登录会提示设置 root 密码,随后即可创建项目、用户等资源。
notion image
 

四、安装 GitLab Runner 并注册到 GitLab

🖼️ 架构说明

GitLab Runner 是 GitLab 的执行引擎,负责拉取 CI/CD 配置并执行构建、测试、部署等任务。

📦 使用 Docker 部署 Runner

编写 docker-compose.yml
启动服务:

🔑 注册 Runner 到 GitLab 实例

执行注册流程:
按照提示填写信息:
提示项
示例输入
GitLab 实例 URL
http://<你的GitLab服务器IP>
Token
从 GitLab 项目设置 → CI/CD → Runners 获取
Runner 描述
alpine-runner
标签
docker(流水线中可指定)
Executor
docker
默认镜像
alpine:latestnode:18golang:1.21
成功后将自动保存配置文件于 /srv/gitlab-runner/config/config.toml

✅ 页面验证 Runner 注册状态

在 GitLab 项目的 SettingsCI/CDRunners 页面中,确认已注册 Runner 显示为绿色激活状态。
notion image
 

五、验证流水线是否工作

1、新建项目
2、创建 .gitlab-ci.yml
notion image
3、提交代码后查看 Pipelines 执行状态,即可验证 Runner 成功运行。
notion image

📎 参考文档

 
 
 
“Throwable 为 null”的真相:Dubbo 自定义异常无法透传的原因与修复一次 Nacos 实例频繁掉线引发的 503 故障排查实录
Loading...