「详细教程」本地搭建代码托管平台Gitea

摘要:Gitea相对于其他代码托管平台,是一个可以本地部署的开源项目,非常轻量化,运行时对CPU和内存的需求较小,适用于个人或小型团队协作开发,适合在个人电脑或资源受限的服务器上使用。

1. 关于Gitea

Gitea是一个轻量级的Git托管服务,也就是基于Git的代码托管平台,类似于 GitHub 、Gitee等。

Gitea相对于其他代码托管平台,是一个可以本地部署的开源项目,非常轻量化,运行时对CPU和内存的需求较小,适用于个人或小型团队协作开发,适合在个人电脑或资源受限的服务器上使用。

2. Gitea的本地搭建

本次搭建环境演示系统为Ubuntu18.04.4 LTS。

使用Docker容器进行搭建,Docker可以在系统中创建、运行和管理容器。

使用Docker Compose进行管理,Docker Compose是一个Docker拓展工具,可以协同管理多个容器。

2.1 下载安装Docker

本次的Gitea会搭建在容器中,这样做可以将应用程序及其依赖项打包到一个独立的环境中,应用就可以在任何地方运行。因此需要提前安装Docker,命令如下:

sudo apt install docker.io

验证是否安装成功,成功显示版本号则代表安装成功:

docker -v#成功显示Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3

2.2 下载安装Docker Compose

Docker Compose可以统一管理多个容器的启动关闭和配置,是一个非常好用的容器管理工具。

这里提供两种下载方式,在线下载方式简单但有时候会出现较多的问题,离线下载比较稳定:

2.2.1 在线下载方式:

# github下载(外网源)sudo curl -L https://github.com/docker/compose/releases/download/2.30.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose# daocloud下载 (国内源)sudo curl -L https://get.daocloud.io/docker/compose/releases/download/2.30.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

系统若无curl则提前安装:

sudo apt install curl

下载成功后添加可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

验证是否安装成功

docker-compose -v

如果发现有问题,请检查/usr/local/bin/docker-compose文件,如果发现大小只有几百字节或更小,并且查看发现仅仅为一个HTML页面,则代表镜像源下载失败了,建议换离线下载方式进行安装。

2.2.2 离线下载方式

到Docker Compose项目仓库下载对应架构的版本,官方网址:https://github.com/docker/compose/releases

这里笔者的系统是x86_64架构,并选择2.30.3版本的程序下载:

直接将该exe文件改名放到/usr/local/bin/中,并修改权限:

#移动并改名sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose#修改权限sudo chmod +x /usr/local/bin/docker-compose

再验证是否安装成功:

#验证docker-compose --version#成功显示Docker Compose version v2.30.3

2.3 配置docker-compose.yml文件

首先创建一个用于存放配置文件的项目目录并进入:

mkdir ~/gitea && cd ~/gitea

在该文件夹中创建和编写docker-conpose.yml配置文件,docker-cpmpose命令执行时会自动识别当前文件夹的docker-conpose.yml配置文件,当然也可以指定其他路径的配置文件。

该docker-conpose.yml配置文件配置了两个服务,即Gitea和MySQL服务,MySQL为Gitea服务提供数据库支持:

若配置文件中注释无法被命令识别,则删除其中的注释再使用

# 定义网络配置networks:gitea: # 创建一个名为 'gitea' 的自定义网络external: false # 表示该网络由 Docker Compose 自动创建,而不是使用外部网络# 定义服务配置services:
# Gitea 服务配置server:# 使用 Gitea 镜像,指定版本为 1.21.1image: gitea/gitea:1.21.1
# 容器名称设为 'gitea'container_name: gitea

# 环境变量配置environment:- USER_UID=1000 # 设置 Gitea 进程运行的用户 ID 为 1000- USER_GID=1000 # 设置 Gitea 进程运行的用户组 ID 为 1000- GITEA__database__DB_TYPE=mysql # 设置数据库类型为 MySQL- GITEA__database__HOST=db:3306 # 设置数据库主机为 db 服务(MySQL 服务)并指定端口- GITEA__database__NAME=gitea # 设置数据库名称为 gitea- GITEA__database__USER=gitea # 设置数据库用户为 gitea- GITEA__database__PASSWD=gitea # 设置数据库密码为 gitea# 容器的重启策略,容器停止后会自动重启restart: always# 将容器连接到 'gitea' 网络networks:- gitea # 使用上面定义的 'gitea' 网络
# 持久化存储和时区配置volumes:# 将主机的 ./gitea 目录挂载到容器内的 /data 目录,用于存储 Gitea 的数据- ./gitea:/data# 将宿主机的时区配置挂载到容器内,确保容器时区与主机一致- /etc/timezone:/etc/timezone:ro # ro 表示只读# 将宿主机的本地时间配置挂载到容器内,确保容器时间与主机一致- /etc/localtime:/etc/localtime:ro # ro 表示只读
# 端口映射ports:# 将宿主机的 3000 端口映射到容器的 3000 端口,Gitea Web 界面可通过宿主机 3000 端口访问- "3000:3000"# 将宿主机的 222 端口映射到容器的 22 端口,用于 SSH 访问 Gitea- "222:22"
# 定义依赖关系,确保 MySQL 服务在 Gitea 启动之前启动depends_on:- db

# MySQL 数据库服务配置db:# 使用 MySQL 镜像,指定版本为 8image: mysql:8
# 容器名称设为 'mysql'container_name: mysql
# 容器的重启策略,容器停止后会自动重启restart: always

# 环境变量配置environment:- MYSQL_ROOT_PASSWORD=gitea # 设置 MySQL root 用户的密码为 gitea- MYSQL_USER=gitea # 设置 MySQL 用户为 gitea- MYSQL_PASSWORD=gitea # 设置 MySQL 用户的密码为 gitea- MYSQL_DATABASE=gitea # 创建一个名为 gitea 的数据库
# 将容器连接到 'gitea' 网络networks:- gitea # 使用上面定义的 'gitea' 网络
# 端口映射ports:- "3306:3306" # 将宿主机的 3306 端口映射到容器的 3306 端口,供 Gitea 访问 MySQL

# 持久化存储 MySQL 数据volumes:- ./mysql:/var/lib/mysql # 将宿主机的 ./mysql 目录挂载到容器内的 /var/lib/mysql 目录,持久化数据库数据

2.4 启动docker容器

sudo docker-compose up -d

如果启动出现超时报错,则需要更换加速镜像地址。

修改加速镜像地址需修改/etc/docker/daemon.json文件内容,若无该文件则创建再编写:

{"registry-mirrors": ["https://docker-proxy.741001.xyz","https://registry.docker-cn.com"]}

保存文件修改,再依次执行如下命令重启docker:

sudo systemctl daemon-reloadsudo systemctl restart docker

docker服务重启后再次执行启动docker容器命令:

sudo docker-compose up -d

启动成功后,可以通过如下命令检查gitea服务的docker容器是否启动:

sudo docker ps
#若成功则显示,可以看到对应的容器ID、镜像、端口映射、服务名称等CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES89825b4d35bb gitea/gitea:1.21.1 "/usr/bin/entrypoint…" 2 minutes ago Up 2 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp giteacd7ef47cc0a9 mysql:8 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql

2.5 访问本地Gitea服务

浏览器输入主机IP+端口,即可访问:

192.168.xx.xx:3000

初次进入后,会显示一个初始配置确认页面,如下图所示,该配置已正常读取docker-conpose配置,如果没有特殊需求直接点击立即安装即可:

安装完成后,注册账号并登录即可正常使用(服务中注册的第一个账号默认为管理员)。

在Gitea中,可以像其他代码托管平台一样实现版本控制、分支管理、代码审查、问题跟踪等功能。

Gitea同样也支持将其他托管平台代码迁移过来,进行仓库备份:

来源:亿佰特物联网应用

相关推荐