当前位置: 首页 >应用方案 >技术应用 >

如何在本地搭建代码托管平台Gitea案例教程

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版本的程序下载:

1  代码托管平台Gitea

直接将该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.1
   image: 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 镜像,指定版本为 8
   image: 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-reload
sudo systemctl restart docker

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

sudo docker-compose up -d

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

sudo docker ps

#若成功则显示,可以看到对应的容器ID、镜像、端口映射、服务名称等
CONTAINER ID   IMAGE                COMMAND                   CREATED         STATUS         PORTS                 NAMES
89825b4d35bb   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   gitea
cd7ef47cc0a9   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配置,如果没有特殊需求直接点击立即安装即可:

2  代码托管平台Gitea

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

3  代码托管平台Gitea

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

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

4  代码托管平台Gitea
5  代码托管平台Gitea


今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多通信技术资料,感兴趣的小伙伴可以登录我们的亿佰特官网进行了解,也可以直接拨打400电话咨询技术专员!



相关阅读:

1、【服务器】Nginx Proxy Manager申请cloudflare泛域名教程

2、Dell服务器PowerEdge R730xd部署ESXI服务器部署教程

3、DNS解析服务systemd-resolved的常用命令

4、Chirpstack服务器简介和搭建教程


亿佰特官网 4000-330-990

https://www.wjx.cn/jq/84863372.aspx