侧边栏壁纸
博主头像
琉璃红梅 博主等级

琉璃世界,白雪红梅。

  • 累计撰写 52 篇文章
  • 累计创建 102 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

Docker系列-Gitea的搭建与部署

雪穗
2024-02-21 / 0 评论 / 0 点赞 / 61 阅读 / 0 字
温馨提示:
本文最后更新于2026-01-23,若内容或图片失效,请留言反馈。 若部分素材不小心影响到您的利益,请联系我删除。

1.Gitea简介

Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来,几乎所有代码都已更改。自建的Git仓库约等于Github等,只不过它完全掌握在自己手中。

官网:https://docs.gitea.com/zh-cn/

2.Gitea的安装

安装前提:

1.已经安装好docker和docker compose,请参看我的博文 docker系列-docker与docker compose安装

2.服务器最低配置:2 个 CPU 内核和 1GB 内存

建议:

1.将所有docker项目放在统一目录下 /root/data/docker_data/,方面后期管理与维护(root安装)

2.将所有docker项目放在统一目录下 ~/docker_data/,方面后期管理与维护(rootless安装)

3.添加SWAP虚拟内存,请参看我的博文 添加 SWAP 虚拟内存

注意:

1.本文除了2.2小节外其余均以root安装方式演示,如果使用rootless安装,请自行修改相关目录,并且在执行docker命令时需要加上sudo

参考博文:

1.使用 Docker 安装 (rootless)

2.使用 Docker 安装

3.基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能

2.1 以root安装Gitea

2.1.1 创建安装目录
mkdir -p /root/data/docker_data/gitea

2.1.2 创建docker-compose.yaml文件并上传至服务器

上传 docker-compose.yaml 文件到gitea目录下,docker-compose.yaml 文件内容如下:

注意:凡是密码都应该自行修改

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql     #数据库类型
      - GITEA__database__HOST=db:3306      #数据库端口
      - GITEA__database__NAME=gitea        #数据库名
      - GITEA__database__USER=gitea        #数据库的用户名
      - GITEA__database__PASSWD=gitea      #用户名密码
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea   #数据库的root密码
      - MYSQL_USER=gitea            #数据库用户名
      - MYSQL_PASSWORD=gitea        #数据库用户名为gitea的密码
      - MYSQL_DATABASE=gitea        #数据库名
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql

2.2 以rootless安装Gitea

2.2.1 创建普通用户和所需目录

1.使用如下命令创建一个普通用户sqwfly(需要登录root创建)

adduser sqwfly

#创建过程会提示你输入密码
Adding user `sqwfly' ...
Adding new group `sqwfly' (1000) ...
Adding new user `sqwfly' (1000) with group `sqwfly' ...
Creating home directory `/home/sqwfly' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for sqwfly
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [Y/n] y

2.输入如下指令,将用户名添加到sudoers文件,这样才可以使用sudo命令,否则报错:
sqwfly is not in the sudoers file. This incident will be reported.

adduser sqwfly sudo

#执行过程
Adding user `sqwfly' to group `sudo' ...
Adding user sqwfly to group sudo
Done.

切换至sqwfly用户

su sqwfly

#进入自己的家目录
cd ~

创建所需目录与文件并赋予相应权限

mkdir -p ~/docker_data/gitea/{data,config}
cd ~/docker_data/gitea
sudo chown 1000:1000 config/ data/
2.2.2 创建docker-compose.yaml文件并上传至服务器

上传 docker-compose.yaml 文件到gitea目录下,docker-compose.yaml 文件内容如下:

注意:凡是密码都应该自行修改

version: "2"

services:
  server:
    image: gitea/gitea:1.21.4-rootless
    environment:
      - GITEA__database__DB_TYPE=mysql     #数据库类型
      - GITEA__database__HOST=db:3306      #数据库端口
      - GITEA__database__NAME=gitea        #数据库名
      - GITEA__database__USER=gitea        #数据库的用户名
      - GITEA__database__PASSWD=gitea      #用户名密码
    restart: always
    volumes:
      - ./data:/var/lib/gitea
      - ./config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db
 
  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea   #数据库的root密码
      - MYSQL_USER=gitea            #数据库用户名
      - MYSQL_PASSWORD=gitea        #数据库用户名为gitea的密码
      - MYSQL_DATABASE=gitea        #数据库名
    volumes:
      - ./mysql:/var/lib/mysql

2.3 Gitea的部署

查看3000端口有没有被占用,使用lsof命令前需要先安装

Centos安装命令:

yum install lsof

Ubuntu安装命令:

apt-get install lsof

然后执行如下命令:

lsof -i:3000

没有占用,进入gitea目录下进行部署即可,若被占用可以更换为其它未被占用的端口,之后执行如下命令进行部署:

cd /root/data/docker_data/gitea

docker compose up -d

部署成功之后访问 http://ip:3000 ,出现如下设置页面,如果访问失败,请去服务器的运营商后台检查 3000 端口是否开放,一些内容根据 docker-compose.yml 文件自动填充。

服务器域名和基础URL会自动获取服务器的ip地址进行填充,如果设置了域名解析则会填充为域名,注意SSH服务端口为 222,同样与 docker-compose.yaml 文件中的内容对应,如果不是请自行修改。

一些可选配置也建议进行配置,配置SMTP可以用其他用户注册时的邮箱验证

关于SMTP密码的获取请参看我的博文 2.3 开启邮箱的SMTP服务

建议勾选 启用页面访问限制,这样只有注册登录用户才能查看相关仓库

管理员账号设置可选,第一个注册的用户默认为管理员

如果后期还需要修改某些配置,可以修改 /root/data/docker_data/gitea/gitea/gitea/conf/app.ini 文件

例如修改SSH的监听端口为 222

vim /root/data/docker_data/gitea/gitea/gitea/conf/app.ini

修改配置之后需要重启容器才能生效

docker compose restart

接下来就是配置SSH以实现免密连接自建的git仓库

参看我的博文 3.2 Git配置的实际操作流程

3.Gitea的基本使用

和github大同小异

4.Gitea的升级与更新

# 方式一
cd /root/data/docker_data/gitea

docker compose down --rmi all  # 停止容器运行并删除相关镜像

vim docker-compose.yml         # 修改gitea镜像的版本为最新,如果是latest版本此步可以忽略

docker compose up -d           

# 方式二
cd /root/data/docker_data/gitea

docker compose down           # 停止容器运行

vim docker-compose.yml        # 修改gitea镜像的版本为最新,如果是latest版本此步可以忽略

docker compose pull           # 重新拉取镜像

docker compose up -d

5.Gitea的卸载

cd /root/data/docker_data/gitea

docker compose down --rmi all           # 停止容器运行并删除相关镜像

cd ..

rm -rf /root/data/docker_data/gitea     # 完全删除

0

评论区