前言
在当今的软件开发环境中,一个私有的代码托管平台对于团队协作和个人项目管理都至关重要。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 服务。
如果你在部署过程中遇到任何问题,欢迎在评论区留言讨论!
评论