前言
在当今的软件开发环境中,一个私有的代码托管平台对于团队协作和个人项目管理都至关重要。Gitea 是一个轻量级的代码托管解决方案,类似于 GitHub 和 GitLab,但更加轻便且资源占用低。本文将详细介绍如何使用 Docker 快速部署 Gitea 服务。
为什么选择 Gitea?
- 轻量级:相比 GitLab,Gitea 占用资源更少
 - 开源免费:完全开源,没有商业限制
 - 功能齐全:支持 Git 仓库管理、Issue 跟踪、Pull Request 等功能
 - 易于部署:支持多种部署方式,特别是 Docker 部署非常简便
 
基础 Docker 部署
准备工作
首先确保你的系统已经安装了 Docker 和 Docker Compose。如果没有安装,可以参考官方文档进行安装。
创建 docker-compose.yml 文件
在项目目录中创建一个 docker-compose.yml 文件,内容如下:
version: "3"
networks:
  gitea:
    external: false
services:
  server:
    image: docker.gitea.com/gitea:1.23.7
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
启动服务
运行以下命令启动 Gitea 服务:
docker-compose up -d
等待容器启动后,你就可以通过 http://服务器IP:3000 访问 Gitea 的安装界面了。
自定义端口
如果你想使用不同的端口,可以修改 docker-compose.yml 文件中的端口映射部分:
ports:
  - "8080:3000"  # 将主机的8080端口映射到容器的3000端口
  - "2221:22"    # 将主机的2221端口映射到容器的22端口
使用 MySQL 或 PostgreSQL 数据库
默认配置使用 SQLite,适合小型部署。对于生产环境,建议使用 MySQL 或 PostgreSQL。
MySQL 配置示例
version: "3"
networks:
  gitea:
    external: false
services:
  server:
    image: docker.gitea.com/gitea:1.23.7
    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: docker.io/library/mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql
使用命名卷
为了更好的数据管理,可以使用命名卷替代主机卷:
version: "3"
networks:
  gitea:
    external: false
volumes:
  gitea:
    driver: local
services:
  server:
    image: docker.gitea.com/gitea:1.23.7
    container_name: gitea
    restart: always
    networks:
      - gitea
    volumes:
      - gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
初始安装
访问 http://服务器IP:3000 完成安装向导。如果使用了数据库容器,注意将数据库主机地址设置为 db(容器服务名)。
环境变量配置
Gitea 支持通过环境变量配置各种参数,例如:
environment:
  - GITEA__mailer__ENABLED=true
  - GITEA__mailer__FROM=git@example.com
  - GITEA__mailer__PROTOCOL=smtps
  - GITEA__mailer__HOST=smtp.example.com
  - GITEA__mailer__USER=apikey
  - GITEA__mailer__PASSWD=yourpassword
升级 Gitea
升级 Gitea 非常简单:
- 修改 
docker-compose.yml中的镜像版本 - 拉取新镜像:
docker-compose pull - 重启容器:
docker-compose up -d 
SSH 容器直通配置
为了更好的 SSH 支持,可以配置 SSH 直通:
- 确保主机上的 git 用户与容器内的 UID/GID 匹配
 - 挂载主机的 SSH 目录到容器
 - 创建 SSH 转发脚本
 - 配置 authorized_keys 文件
 
详细步骤可以参考文章中的 SSH 容器直通部分。
结语
通过 Docker 部署 Gitea 是一个简单高效的方式,无论是个人使用还是团队协作,都能快速搭建起一个功能完善的代码托管平台。本文介绍了从基础部署到高级配置的多种方式,希望能帮助你顺利搭建自己的 Gitea 服务。
如果你在部署过程中遇到任何问题,欢迎在评论区留言讨论!
                
            
评论