找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1230

积分

0

好友

174

主题
发表于 前天 22:08 | 查看: 4| 回复: 0

在开发一个类似于ModelScope的AI模型托管平台时,我们为每个项目都配备了独立的代码仓库服务。

最初,我们采用了业界广泛使用的GitLab方案。然而,它很快暴露了资源消耗过大的问题:仅仅运行基础的代码托管功能,GitLab及其依赖的PostgreSQL和Redis服务,在运行一段时间后内存占用就接近了10GB。这对于我们追求轻量化的项目需求来说,无疑是一个难以接受的“资源黑洞”。

最终,我们将目光投向了Gitea——一个轻量级的自托管Git解决方案。这一转变带来了显著的效果:内存占用从近10GB骤降至约600MB。更重要的是,Gitea提供了完备的REST API接口,使我们能够将其深度集成到自有的AI平台业务逻辑中。

本文将指导你快速完成Gitea的Docker化部署,并演示仓库创建以及如何利用其REST API实现定制化业务集成。

Gitea架构示意图

部署前置条件与组件说明

Gitea部署组件表

组件 是否必须 用途说明
数据库(MySQL / PostgreSQL / SQLite) ✅ 必须 存储用户、仓库、Issue、Pull Request、权限等核心业务数据
S3 / MinIO(对象存储) ➖ 可选 用于存储仓库附件、Git LFS大文件;未配置则使用服务器本地磁盘
Redis ➖ 可选 用作缓存、会话存储和任务队列,可显著提升系统性能

Gitea支持SQLite、MySQL 8及PostgreSQL 12等数据库。需要注意的是,SQLite仅支持单进程/线程写入,性能受限,不适合生产环境。

考虑到熟悉度与通用性,我们选择MySQL 8作为数据库。请提前安装MySQL,并创建一个名为 gitea 的空数据库(此时库内无需任何表)。

创建Gitea数据库

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初始化安装界面

如图,在页面中配置好数据库连接信息(指向我们预先创建的gitea数据库),然后点击“立即安装”。所有配置将被保存至容器内的 /data/gitea/conf/app.ini 文件中。

安装完成后,界面如下:

Gitea安装完成

注册初始管理员(root)账号后,即可登录进入Gitea主页面。

Gitea首页

创建与管理代码仓库

Gitea的仓库创建界面与GitHub类似,直观易用。

创建新仓库界面

输入仓库名称等基本信息,即可成功创建一个Git仓库。

仓库创建成功

在克隆或推送代码到私有仓库时,通常需要身份验证。除了账号密码,更安全的方式是使用个人访问令牌(Personal Access Token, PAT)。

创建访问令牌

令牌创建成功后请妥善保存,在命令行执行git clonegit push时,可使用此令牌作为密码。

访问令牌列表

调用Gitea REST API实现业务集成

Gitea提供了完整的Swagger API文档。访问 http://localhost:3000/api/swagger#/repository,可以查阅所有可用的API接口。

Gitea API Swagger文档

基于这些开放的API,我们可以将Gitea的功能封装成内部服务。例如,可以使用Java Spring Boot框架,构建一个统一的仓库管理服务,实现对仓库的创建、删除、权限分配等操作的自动化管控。

API服务封装示意图

总结与方案对比

下图展示了Gitea与GitLab在关键指标上的对比。对于资源敏感、追求轻量化且需要深度定制的场景,Gitea凭借其极低的资源开销和友好的数据库/中间件集成API,成为了一个非常理想的选择。

Gitea与GitLab对比图

通过Docker容器化部署,Gitea的安装和运维变得极其简单,能够快速适配并融入现有的开发运维体系,满足企业级业务对自托管代码仓库的定制化需求。




上一篇:嵌入式Web服务器选型指南:从NGINX到Boa的6种方案对比与实战
下一篇:后端开发五年后,该走技术专家还是管理路线?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 16:02 , Processed in 0.117552 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表