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 的文件。