Gitea + Runner 部署配置

Gitea

配置前需要手动创建dataconfig文件夹不然会出现权限问题,userid也需要根据对应的角色进行修改。rootless为非root用户模式,默认以git用户运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
services:
server:
image: docker.gitea.com/gitea:1.27.1-rootless
user: '1000:1000'
environment:
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=${DB_HOST}
- GITEA__database__NAME=${DB_NAME}
- GITEA__database__USER=${DB_USER}
- GITEA__database__PASSWD=${DB_PASSWORD}
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"

对应 .env:

1
2
3
4
DB_HOST=db:5432
DB_NAME=gitea
DB_USER=gitea
DB_PASSWORD=your_secure_password

docker-compose 字段说明:

字段 说明
image Gitea rootless 镜像,官方推荐
user: '1000:1000' 以指定 UID/GID 运行,避免 root 权限(需与主机上创建 data/config 目录的用户一致)
environment 数据库连接参数,通过 GITEA__ 前缀注入
volumes ./data 存储仓库数据,./config 存储配置文件;:ro 为只读挂载时区和时间
ports 3000 为 Web UI,2222 为 SSH 克隆端口
restart: always 容器异常退出后自动重启

runner

以 Docker-in-Docker 方式执行 CI 任务。

需要提前创建好config.yaml文件和data文件夹

docker-compose.yaml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
services:
runner:
image: gitea/act_runner:nightly
restart: unless-stopped
environment:
HTTP_PROXY:
HTTPS_PROXY:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL: "${INSTANCE_URL}"
GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}"
volumes:
- ./config.yaml:/config.yaml
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock

docker-compose 字段说明:

字段 说明
image: nightly 使用 act_runner 最新构建版本
volumes: /var/run/docker.sock 挂载宿主 Docker socket,实现容器内调度 Docker(Docker-in-Docker)
./data 存储 Runner 注册凭证等运行时数据
CONFIG_FILE 指定 Runner 实例配置文件路径
HTTP_PROXY / HTTPS_PROXY 有代理环境需填入,无代理则留空
GITEA_RUNNER_REGISTRATION_TOKEN 从 Gitea 管理后台获取,用于将 Runner 注册到实例

对应 .env:

1
2
3
4
5
6
7
8
# Gitea 实例地址(确保 Runner 容器能访问)
INSTANCE_URL=

# 从 Gitea 后台获取的全局注册令牌
REGISTRATION_TOKEN=

# Runner 显示名称(可选,默认取容器 hostname)
RUNNER_NAME=gitea-runner

config.yaml(Runner 实例配置):

1
2
3
4
5
runner:
capacity: 1
labels:
- "hexo:docker://node:20-bullseye"
- "um:docker://node:24.7.0"

labels 说明

labels 决定 Runner 能处理哪些 niche 标签任务。格式为 name:docker://image

标签 含义
hexo 自定义名称,可按项目需求命名
um 同上,示例别名

如需无标签 Runner,删除 labels 字段或留空。Runner 会自动注册 ubuntu 等基础标签。