04-部署私有代码仓库服务-Gitea

发布网友 发布时间:2024-10-24 15:00

我来回答

1个回答

热心网友 时间:2024-10-31 13:27

提示:本系列笔记全部存在于 Github,可以直接在 Github 查看全部笔记

企业级最流行的私有代码仓库是Gitlab,一开始我也打算部署 Gitlab作为私有代码仓库。

但部署完成后发现,Gitlab 资源占用太大了。即使优化后也要占用 3g 内存,最后只好放弃这一方案。

随后发现了Gitea、Gogs 这两个轻量级的私有仓库,两个都是优秀的轻量级私有仓库。

经过对比后,发现Gitea 是从 Gogs 项目 fork 出的项目。官方给出了 fork 理由: blog.gitea.io/2016/12/w...,有兴趣的可以查看。

也就是说Gitea项目是优于 Gogs 项目的,最后就选择了 Gitea。

Gitea 虽然是轻量级,但也具有强大的功能,可以放心使用。

docs.gitea.io/zh-cn/

Gitea数据库选择

Gitea 支持mysql, postgres, mssql, tidb, sqlite3等多种数据库。最简单的是直接使用 sqlite3,作为一个文档性数据库,不需要单独部署服务。

在此使用postgres 数据库,现在 postgres 也是主流的数据库,很多企业都从 mysql 转向了 postgress。

至于postgres 与 mysql 之间的对比,有兴趣的朋友可以自行查询。

DockerFile

在Dockerfile 配置文件中部署了两个容器: 一个是 Postgres(数据库)服务,一个是 Gitea服务。

使用networks 添加了一个自定义网络。两个容器都加入这个自定义网络中,使用自定义网络进行通讯。

PS:Docker 中, 提供了一个 network 模块。同属于一个 network 下的容器可以使用 容器名称、服务名称 直接通讯。

Postgres 服务中通过环境变量设置了默认的数据库、用户名称和用户密码信息。

Gitea 服务中通过环境变量设置了 运行容器的 UID、GID,HTTP 监听端口、UI 上显示的克隆 URL。连接数据库、禁用注册等信息,至于还有其它参数,可以自行查询。

Gitea 端口号映射了两个 3000、3001,分别是 HTTP访问和 SSH 访问,不过现在基本上都使用 HTTP,SSH 可以使用参数禁用。

在配置文件中有一个depends_on 属性,这个属性是控制部署顺序的。意思是 Gitea 部署依赖 postgres 部署。

使用这个配置安装成功后,会成功部署两个容器和创建一个 network,成功后可以进行访问Gitea。

安装引导

第一次访问会进入安装向导页面,该页面是用于设置安装配置信息。

向导页面会带入 environment 中填写的设置,很多信息不需要进行设置。

不过其中有一个管理员账号设置,这个是设置管理员的。如果不设置管理员,默认第一个注册用户将自动成为管理员,但是在禁止注册的情况下必须设置管理员。

设置管理员后点击安装,便会使用当前页面配置进行安装Gitea。安装完毕后会自动跳转到主页。

推送代码

成功之后可以创建一个仓库将之前的 web 项目推送到此仓库。

PS: 图中HTTP 显示的 IP 地址是部署时 DOMAIN 属性设置的那个。

网关代理配置网关

下一步就配置Gitea 的网关代理。

首先还是配置网关,网关配置就不再介绍。

配置完网关后,还需要配置Gitea 服务中的配置。

此时重新部署的话会很麻烦,所以可以修改Gitea 的配置文件修改置。

配置文件是/data/gitea/conf/app.ini。只需要修改此配置文件中 ROOT_URL、DOMAIN、 SSH_DOMAIN,随后重启容器就可以。

作为一个强迫症,我还会将Portainer 可视化工具中的环境变量进行改动。

Portainer 可视化工具是支持修改配置然后重启部署。

PS: 注意,直接改动Portainer 可视化工具中环境变量是不行。环境变量所设置的配置已经写入了文件。

设置上传大小

Nginx 有一个上传文件大小,上传大于大小的文件会返回 403 错误,其大小默认值为 1MB。

所以默认当使用网关(Nginx) push 到 Gitea,如果文件大于 1MB 就会报错。

解决这个问题,只需要修改网关(Nginx) 中 client_max_body_size 属性就可以。

修改并重启网关(Nginx) 后就可以上传大于 1MB 的文件。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com