背景简介
使用 Docker 部署 act_runner 替代二进制部署。
前置信息
- Docker 【Docker - Debian 安装】
- Gitea【Gitea - 启用 CI/CD 系统 Actions 功能 】
详细信息
文件架构
gitea_act_runner/
|-- docker-compose.yml
|-- .env
|-- data/
| |-- scripts/
| | |-- entrypoint.sh
准备配置文件
- 准备
.env配置文件
# ======================================================
# 请根据您的实际情况修改以下变量
# ======================================================
# Gitea 实例地址
GITEA_INSTANCE_URL=https://your.gitea.domain
# 从 Gitea > Settings > Actions > Runners 获取的 Token
GITEA_RUNNER_REGISTRATION_TOKEN=<YOUR_RUNNER_TOKEN>
# Runner 的名称 (可选,默认为 vps-runner-docker)
GITEA_RUNNER_NAME=vps-runner-docker
# Runner 的标签 (可选,默认为 self-hosted,linux,x64,docker)
GITEA_RUNNER_LABELS=self-hosted,linux,x64,docker
- 配置一键注册和启动脚本
script/entrypoint.sh
#!/bin/sh
CONFIG_FILE="/data/.runner"
DAEMON_PID=""
# 启动守护进程的函数
start_daemon() {
echo "Starting runner daemon..."
# 在后台启动守护进程,以便我们可以监控它
/usr/local/bin/act_runner daemon &
DAEMON_PID=$!
}
# 检查守护进程是否因认证失败而退出
check_daemon() {
# 等待几秒,让守护进程有时间尝试连接
sleep 5
# 检查进程是否还在运行
if ! kill -0 $DAEMON_PID 2>/dev/null; then
echo "Daemon exited unexpectedly. Checking for auth error..."
# 检查最近的日志中是否有认证错误
if tail -n 20 /data/log/act_runner.log 2>/dev/null | grep -q "unregistered runner"; then
echo "Auth error detected. Forcing re-registration..."
rm -f "${CONFIG_FILE}"
return 1 # 返回非零值表示需要重试
fi
fi
return 0 # 返回零表示一切正常
}
# 主逻辑
if [ ! -f "${CONFIG_FILE}" ]; then
echo "Runner not registered. Registering now..."
/usr/local/bin/act_runner register
fi
# 尝试启动守护进程
start_daemon
# 检查守护进程状态
if ! check_daemon; then
echo "Retrying registration and daemon start..."
/usr/local/bin/act_runner register
start_daemon
fi
# 保持容器运行
wait $DAEMON_PID
- 准备
docker-compose.yml配置文件
services:
gitea-act-runner:
image: gitea/act_runner:0.2.10
container_name: gitea-act-runner
restart: unless-stopped
# 从 .env 文件中读取环境变量
env_file:
- ./.env
volumes:
# 持久化 Runner 的配置和注册信息
- ./data:/data
部署容器
- 启动 gitea-act-runner 服务
docker compose up -d
[+] Running 2/2
✔ Network act_runner_default Created
✔ Container gitea-act-runner Started
注册信息会保存在我们挂载的 ./data 目录中。
- 查看 log
docker logs -f gitea-act-runner
.runner is missing or not a regular file
level=info msg="Registering runner, arch=amd64, os=linux, version=v0.2.10."
level=debug msg="Successfully pinged the Gitea instance server"
level=info msg="Runner registered successfully."
SUCCESS
time="2025-10-26T08:30:54Z" level=info msg="Starting runner daemon"
time="2025-10-26T08:30:54Z" level=info msg="labels updated to: [self-hosted:host linux:host x64:host docker:host]"
time="2025-10-26T08:30:54Z" level=info msg="runner: dev-act-runner-docker-1, with version: v0.2.10, with labels: [self-hosted linux x64 docker], declare successfully"
- 查看 runner 信息

以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言讨论。