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

亿佰特物联网应用 2024-12-18 17:19:55
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.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-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同样也支持将其他托管平台代码迁移过来,进行仓库备份:

人在灯不灭,人体微动毫米波雷达模组,精准生命存在感知与距离探测

上新啦!ProfiNet网关、LoRa分布式IO、手机智能遥控开关、USB转换器等​

0 阅读:0

亿佰特物联网应用

简介:一家专注于物联网通信应用的高新技术企业