当前位置: 首页 > news >正文

10GB vs 600MB:我们弃用 GitLab,选择了这个轻量级神器

最近在开发一个类似魔搭(ModelScope)的AI 模型托管平台,需要为每个项目提供独立的仓库服务。

最初的方案选择了业界熟知的 GitLab ,但很快就遇到了瓶颈:仅仅是基础的代码托管功能,GitLab全套服务(主进程、PostgreSQL 和 Redis )在运行一段时间后,内存占用一度逼近 10GB。这对于我们的轻量级项目需求而言,无疑是一个难以承受的“资源黑洞”。

最后我们选择了 Gitea 这个轻量级的自托管 Git 解决方案——它不仅将内存占用从10GB降低到 600MB左右,更重要的是提供了完整的API接口,让我们可以深度集成到自己的 AI 平台中。

本文将带你快速使用 Docker 部署 Gitea,并演示如何创建仓库,以及如何通过 Gitea REST API 实现业务定制 。

1 部署前置准备

组件 是否必须 用途说明
数据库(MySQL / PostgreSQL / SQLite) ✅ 必须 存储核心业务数据:用户、仓库、Issue、PR、权限、LFS 元信息等
S3 / MinIO(对象存储) ➖ 可选 用于存储仓库附件、LFS 大文件;没有时使用本地磁盘
Redis ➖ 可选 用作缓存、Session、队列后台,提升性能

gitea 支持 sqlite 、mysql8 、pg12 ,因为 sqlite 只支持单进程/线程写,性能极差。

因为笔者使用 MySQL 最多也最熟悉,所以我们选择前置安装 MySQL 8 。安装完 MySQL 后 ,在数据库中新建数据库 gitea (此时,gitea 数据库并没有任何表)。

2 Docker 安装 Gitea

接下来,运行如下命令,使用 Docker 安装 Gitea 。

docker run -d --name gitea \
-p 3000:3000 -p 222:22 \
-v /Users/zhangyong/docker/gitea/data:/data \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-e USER_UID=1000 \
-e USER_GID=1000 \
--restart always \
gitea/gitea:latest

安装完后第一次访问页面 http://localhost:3000 :

如图,我们配置了 数据库 Gitea ,然后点击立即安装 。

配置选项将写入以下位置: /data/gitea/conf/app.ini

安装完成之后,界面如下:

注册完 root 账号后,进入首页:

3 新建仓库

如图,创建仓库的界面和 Github 类似,输入仓库名,即可创建成功:

当我们想克隆 或者 推送仓库时,需要创建用户的 pat ( Access Token )。

创建成功后,界面如下:

我们将令牌保存好,在克隆仓库时,或者 push 仓库时,需要使用该令牌。

4 调用 API

如图,当我们访问:http://localhost:3000/api/swagger#/repository , 可以查看所有的 Gitea 开发 API 。

如图,我们可以将所有的 Gitea API 封装成如下的 Java 服务:

5 总结

上图是笔者调研 Gitea 和 GItlab 的对比图,相比之下 ,Gitea 真是轻量级神器 ,能够完美适配公司业务的需求。

http://www.jsqmd.com/news/84009/

相关文章:

  • 每天一个网络知识:什么是光纤?
  • 解读SAE/USCAR-2
  • AI助力Vue3开发:Teleport组件智能生成实战
  • DataEase开源BI工具:如何选择最适合你的数据可视化版本
  • 缺少vc++xxxx Redistributable各版本的下载链接及下载vc_redist运行库
  • 酒店设计公司推荐:国内实力机构服务解析 - 品牌排行榜
  • VSCode终极版 - 详解
  • 七自由度车辆动力学Matlab Simulink仿真模型探究:Dugoff轮胎模型的奇妙之旅
  • WebSocket概念原理及使用注意事项 - 实践
  • 30 * 7 = 210
  • 高级语言程序设计第九次作业
  • 墨菲安全MurphySec:5分钟快速上手的软件供应链安全检测工具
  • CSAPP cachelab
  • 全漏洞笔记--一些基本知识
  • 江苏抗台风抗风卷帘门厂家排名前十有哪些 - 品牌排行榜
  • Ink/Stitch 开源刺绣设计软件:免费教程与完整使用指南
  • nmap你看我这篇就够了
  • 从微信红包延迟看超级应用高并发下的数据一致性攻坚
  • 我已经完全爱上沃玛了!
  • JavaScript 词法作用域(Lexical Scoping)与 变量提升(Hoisting):从执行上下文初始化阶段看函数与变量的创建序
  • Livox-SDK2深度解析:激光雷达开发的高效实战指南
  • VLAN配置实验报告
  • 为什么我一开始就对“短信验证码”保持高度警惕
  • 3G期末考核题解
  • GPT的前世今生
  • 【瑞萨RA × Zephyr评测】spi(ssd1306屏)
  • 逻辑回归简介
  • 半吊子投标人太让人崩溃了
  • JavaScript 的垃圾回收对实时图形(60FPS)的影响:如何编写‘零 GC’代码实现物理引擎的稳帧运行
  • 汽车 KMS 如何支撑百万级 ECU 的密钥生命周期管理?