源本科技 | 码上会

部署 GitLab 本地代码仓库

2026/05/14
66
0

引言

GitLab 是一个开源的、基于 Web 的 Git 仓库管理系统,提供代码仓库托管、团队协作、CI/CD 持续集成等全套研发功能。它完整覆盖 DevOps 全生命周期,包含代码版本控制、合并请求、自动化构建、部署监控等能力。GitLab 采用一体化平台架构,无需搭配多款第三方工具,团队可在同一平台完成开发、审核、运维工作,大幅提升开发效率与代码规范度。

https://about.gitlab.com/

容器化部署

采用 Docker Compose 方式部署,镜像使用官方稳定版 gitlab/gitlab-ce:18.10.5-ce.0,适配当下主流服务器环境,部署简单、可移植性强,适合个人学习与中小型企业私有化部署。

编写配置文件

新建部署目录,创建 docker-compose.yml 配置文件

注意:千万不要忘记修改为自己的 IP 地址

services:
  gitlab-ce:
    image: "gitlab/gitlab-ce:18.10.5-ce.0"
    container_name: gitlab-ce
    ports:
      - "80:80"
      # 容器 22 端口用于 SSH 免密拉取推送,与宿主机 SSH 22 端口冲突,映射为 2222
      - "2222:22"
    environment:
      # 内网访问 IP,需保证服务器固定 IP,不可随意改动
      # 注意修改为你自己的 IP
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.60.136'
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
    restart: always
    volumes:
      - ./config:/etc/gitlab
      - ./logs:/var/log/gitlab
      - ./data:/var/opt/gitlab
    # 解决部署启动报错、共享内存不足问题
    shm_size: 256m

部署启动命令

  • 先创建数据卷目录 data 并配置权限

mkdir data
chmod 755 data
  • 在配置文件同级目录,执行后台启动命令:

# 后台启动容器
docker-compose up -d

# 查看启动日志,观察初始化进度
docker-compose logs -f

注意:GitLab 硬件要求较高,最低配置建议 4 核 CPU + 8 GB 内存;首次启动初始化耗时较长,需等待 5 ~ 10 min,日志无报错、页面可正常访问即为启动成功。

系统初始化

  • 当日志出现如下内容表示启动成功

查询初始管理员密码

GitLab 初始密码仅保留 24 h,过期自动失效,部署完成后立即执行命令获取密码:

docker exec -it $(docker ps | grep gitlab | awk '{print $1}') grep 'Password:' /etc/gitlab/initial_root_password

登录系统

访问地址:服务器内网 IP

  • 默认账号:root

  • 默认密码:上述命令查询到的初始密码

切换中文语言

  • 点击右上角头像,选择 preferences偏好设置;

  • 找到 Localization 语言区域,下拉选择简体中文

  • 保存设置,刷新页面即可生效

修改管理员密码

  • 【用户设置】-【Access】-【密码】

  • 密码强制要求,我在这里设置为 git123..$

关闭公开注册功能

企业 / 内网私有化部署中,禁止陌生用户注册,仅由管理员手动创建账号,操作步骤:

  • 【管理区域】-【设置】-【通用】-【注册限制】

权限角色说明

  • Guest(访客):仅可创建议题、发表评论,无代码仓库读写权限;

  • Reporter(报告者):可克隆查看代码,禁止提交推送,适配测试、产品人员;

  • Developer(开发者):可拉取、开发、提交、推送代码,适配普通研发人员;

  • Maintainer(维护者):可创建项目、管理分支、合并代码、新增成员,适配项目负责人;

  • Owner(拥有者):最高权限,可删除项目、迁移仓库、管理全部成员,适配团队负责人。

创建项目

创建群组

  • 如果没有【群组】需要先创建群组

新建仓库

  • 点击右上角 + 号创建项目

image-CqTu.webp
image-BhbF.webp

克隆代码

  • 代码克隆成功后将之前的代码提交到仓库

IDEA 提交代码

  • 使用 IDEA 提交代码需要生成一个访问令牌,这个窗口是自动弹出来的

  • 点击上图中的【生成】会自动跳转到【个人访问令牌】界面,无需修改配置,直接点击【生成令牌】即可

  • 复制令牌到 IDEA 中,点击【登录】就可以在【IDEA】中提交代码了

配置 SSH 公钥访问

CI/CD 流水线追求无人值守自动化,需频繁拉取、推送代码,无法人工输入账号密码。配置 SSH 密钥采用非对称免密认证,替代明文密码登录,适配 Jenkins/GitLab 等 CI 工具自动执行构建、部署流程

修改注册邮箱

  • 点击【管理员】-【用户】-【自己】-【编辑】

  • 修改成一个合法的邮箱地址即可

生成密钥对

  • 打开 Linux 终端,执行密钥生成命令

注意:一般会有专门的部署服务器,本次演示我们先在实际部署项目的虚拟机中创建,我们的虚拟机是 Ubuntu Service

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"  # 邮箱替换为你的 GitLab 注册邮箱
  • 命令执行后按提示操作

    • 密钥保存路径:默认 ~/.ssh/id_rsa 直接回车

    • 一路回车即可

  • 生成成功后,在 ~/.ssh/ 目录下会生成两个文件

    • id_rsa 私钥:绝对保密,不可泄露

    • id_rsa.pub 公钥:需添加到 GitLab 账户

添加公钥到 GitLab

  • 使用命令 cat ~/.ssh/id_rsa.pub 查看密钥

  • 点击【右上角头像】-【偏好设置】-【左侧菜单 SSH 密钥】-【添加新密钥】

  • 粘贴公钥并保存

    • 在【密钥】文本框粘贴完整公钥内容

    • 填写【标题】(如 "Ubuntu Service",便于识别)

    • 点击【添加密钥】完成添加

通过 SSH 拉取代码

  • 进入 GitLab 仓库页面 → 点击【代码】按钮 →【使用 SSH 克隆】→ 复制地址

  • 克隆仓库到本地

git clone ssh://git@192.168.203.134:2222/lusifer/myproject.git
  • 首次连接会提示确认主机指纹,输入 yes 并回车

  • 此时应该看到代码已成功拉取