当前位置: 首页 > news >正文

Windows Docker下Gitea保姆级安装教程:用MySQL 5.7做数据库,一次搞定

Windows Docker环境下Gitea与MySQL 5.7的黄金组合部署指南

在当今软件开发领域,版本控制系统的重要性不言而喻。对于个人开发者或小型团队而言,搭建一个轻量级、高性能的自托管Git服务不仅能提高工作效率,还能确保代码资产的安全可控。本文将详细介绍如何在Windows Docker环境中部署Gitea这一优秀的自托管Git服务,并采用MySQL 5.7作为其后端数据库,打造一个稳定可靠的代码托管平台。

1. 环境准备与基础配置

在开始部署之前,我们需要确保系统满足基本要求。Windows 10或11专业版/企业版/教育版(64位)是运行Docker的理想选择,建议版本1903或更高。同时,至少需要4GB内存和20GB可用磁盘空间以保证服务流畅运行。

首先安装Docker Desktop for Windows:

  1. 从Docker官网下载最新稳定版安装包
  2. 运行安装程序,勾选"使用WSL 2后端"选项
  3. 安装完成后重启系统
  4. 启动Docker Desktop,在设置中确保已启用WSL集成

提示:如果系统不支持WSL 2,也可使用Hyper-V后端,但性能可能略逊一筹

验证Docker安装是否成功:

docker --version docker-compose --version

这两个命令应分别返回Docker和Docker Compose的版本信息。

2. MySQL 5.7容器部署

作为Gitea的后端存储,MySQL 5.7提供了良好的性能和稳定性平衡。我们将使用Docker volume来持久化数据库,确保数据安全。

创建专用数据卷:

docker volume create gitea_mysql_data

启动MySQL 5.7容器:

docker run -d \ --name gitea_mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=your_secure_password \ -e MYSQL_USER=gitea \ -e MYSQL_PASSWORD=gitea_password \ -e MYSQL_DATABASE=gitea \ -v gitea_mysql_data:/var/lib/mysql \ --restart unless-stopped \ mysql:5.7 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_unicode_ci

关键参数说明:

参数说明推荐值
MYSQL_ROOT_PASSWORDroot用户密码设置强密码
MYSQL_USERGitea专用用户名gitea
MYSQL_PASSWORD用户密码与root不同
character-set-server字符集utf8mb4
collation-server排序规则utf8mb4_unicode_ci

验证MySQL容器运行状态:

docker ps -f name=gitea_mysql

3. Gitea容器部署与配置

Gitea作为轻量级Git服务,其Docker部署非常简便。我们将使用官方镜像,并配置与MySQL的连接。

创建Gitea数据卷:

docker volume create gitea_data

启动Gitea容器:

docker run -d \ --name gitea \ -p 3000:3000 \ -p 2222:22 \ -v gitea_data:/data \ --link gitea_mysql:db \ -e DB_TYPE=mysql \ -e DB_HOST=db:3306 \ -e DB_NAME=gitea \ -e DB_USER=gitea \ -e DB_PASSWD=gitea_password \ -e USER_UID=1000 \ -e USER_GID=1000 \ --restart unless-stopped \ gitea/gitea:latest

端口映射说明:

  • 3000: Gitea的Web界面
  • 2222: SSH服务端口(避免与系统SSH冲突)

环境变量关键配置:

数据库配置

  • DB_TYPE: 数据库类型(mysql)
  • DB_HOST: 数据库地址(通过--link连接的别名)
  • DB_NAME: 数据库名
  • DB_USER: 数据库用户
  • DB_PASSWD: 数据库密码

系统配置

  • USER_UID: 运行用户UID(与宿主机用户匹配)
  • USER_GID: 运行用户GID

4. 初始设置与优化

容器启动后,通过浏览器访问http://localhost:3000进入Gitea的初始设置页面。首次安装需要进行以下配置:

  1. 数据库设置

    • 确保数据库类型为MySQL
    • 主机填写db:3306(容器链接别名)
    • 用户名和密码与MySQL容器启动时设置的一致
  2. 常规设置

    • 站点标题:自定义您的Gitea实例名称
    • 仓库根目录:保持默认/data/git/repositories
    • LFS根目录:/data/git/lfs
    • 运行用户:git
  3. 管理员账户

    • 务必设置一个强密码的管理员账户
    • 建议用户名不要使用admin等常见名称
  4. 服务配置

    • 禁用注册或设置注册限制(根据需求)
    • 配置邮件服务(可选但推荐)

完成初始化后,建议进行以下优化:

性能调优

[server] PROTOCOL = http DOMAIN = localhost HTTP_PORT = 3000 ROOT_URL = http://localhost:3000/ DISABLE_SSH = false SSH_PORT = 22 SSH_DOMAIN = localhost START_SSH_SERVER = true OFFLINE_MODE = false

仓库设置

[repository] ROOT = /data/git/repositories SCRIPT_TYPE = bash DEFAULT_PRIVATE = false DEFAULT_PUSH_CREATE_PRIVATE = true MAX_CREATION_LIMIT = -1

5. 日常维护与备份策略

为确保Gitea服务稳定运行,需要建立定期维护机制。

数据库备份

docker exec gitea_mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > gitea_backup_$(date +%Y%m%d).sql

Gitea数据备份

  1. 停止Gitea容器:docker stop gitea
  2. 备份数据卷:docker run --rm -v gitea_data:/data -v $(pwd):/backup alpine tar czf /backup/gitea_data_$(date +%Y%m%d).tar.gz -C /data .
  3. 启动Gitea容器:docker start gitea

自动备份脚本示例

#!/bin/bash # MySQL备份 docker exec gitea_mysql sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" gitea' > /backups/gitea_db_$(date +%Y%m%d).sql # 数据备份 docker run --rm --volumes-from gitea -v /backups:/backup alpine tar czf /backup/gitea_data_$(date +%Y%m%d).tar.gz -C /data . # 清理旧备份 find /backups -type f -name "*.sql" -mtime +7 -exec rm {} \; find /backups -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;

6. 常见问题排查

容器启动失败

  • 检查端口冲突:netstat -ano | findstr "3000"
  • 查看容器日志:docker logs gitea

数据库连接问题

  1. 验证MySQL容器是否运行:docker ps
  2. 测试MySQL连接:
docker exec -it gitea_mysql mysql -ugitea -p
  1. 检查Gitea数据库配置:/data/gitea/conf/app.ini

文件权限问题

  • 确保数据卷正确挂载:docker inspect gitea
  • 调整文件权限:
docker exec gitea chown -R git:git /data

性能优化建议

  • 对于大型仓库,增加MySQL的缓冲池大小
  • 考虑使用SSD存储数据卷
  • 定期执行git gc优化仓库

在实际使用中,我发现将Gitea的数据卷挂载到WSL2子系统中可以获得更好的I/O性能。通过\\wsl$\docker-desktop-data路径可以直接访问数据卷内容,便于直接管理和备份。

http://www.jsqmd.com/news/523477/

相关文章:

  • M3U8 文件解析与实战应用指南
  • MMMU-Pro:如何构建更“真实”的多模态模型能力评估基准
  • InfluxDB核心概念与Spring Boot集成实战
  • 【Rockchip】三、Linux SDK实战:从DTS定制到固件升级——以RV1126/RV1109串口与电源域改造为例
  • WPF运动控制框架实战:5分钟搞定激光切割机路径编辑(附源码下载)
  • Zotero Better Notes最新版模板插入保姆级教程(附HTML代码分享)
  • UniApp小程序地图点聚合实战:从授权定位到自定义聚合样式全流程解析
  • 计算机二级C+三级嵌入式双考亲测:这些时间分配陷阱你一定要避开
  • Ubuntu虚拟机磁盘扩容全攻略:从VMware设置到gparted实战(附常见问题解决)
  • 2026年农村改造化粪池厂家推荐:商砼化粪池/钢筋混凝土化粪池/玻璃钢环保化粪池专业供应精选 - 品牌推荐官
  • LaTeX进阶指南:高效插入EPS矢量图的实用技巧
  • 高德地图自定义Marker偏移问题终极解决方案(附完整代码)
  • 5分钟快速上手ollama:从安装到运行第一个深度学习模型(保姆级教程)
  • Kylin-Desktop-V10-SP1安全中心保姆级配置指南:从防火墙到USB管控,一次搞定
  • 手机上AidLux2.1.0 运行模型广场的yolov8模型
  • 数字资产防护新思路:轻量级加密如何重构文件安全边界
  • 2026年拉伸膜真空包装机厂家推荐:山东康贝特食品包装机械有限公司,大型真空包装机/双室真空包装机厂家精选 - 品牌推荐官
  • 2026 建筑模板厂家甄选|小红板优选指南,千洛木业领跑新锐品牌 - 深度智识库
  • AE转JSON终极指南:解锁After Effects动画数据的高效应用
  • 手把手教你用MT管理器给APK重签名(附自签名证书生成避坑指南)
  • 高精度温控设备采购指南:哪个网站厂家资源最丰富? - 品牌推荐大师
  • 2026年电动蝶阀厂家专业选型参考:加长杆蝶阀/DK蝶阀/手动蝶阀/对夹蝶阀/LT蝶阀/沟槽蝶阀/SW蝶阀/法兰蝶阀推荐 - 品牌推荐官
  • 2026年全国纤维水泥板厂家精选 适配工程墙体屋面等场景 覆盖不同区域 - 深度智识库
  • 解锁显示器VRR潜力:开源工具VRRTest全场景应用指南
  • MMDetection实战:从标注到训练,完整构建自己的目标检测模型
  • 微信物流插件开发实战:后端如何高效获取waybill_token
  • GitHub爆星!10个超赞开源项目,带你轻松玩转大模型(附Star高达87K)!
  • 3.23学习进度
  • VSCode+Typst零配置写作指南:5分钟搞定论文排版环境(含实时预览技巧)
  • R语言数据处理:readxl包实战教程(含多表合并技巧)