docs: update README for React frontend and standalone Docker deploy
Build and Deploy / build-and-push (push) Successful in 51s

This commit is contained in:
2026-07-26 14:55:45 +08:00
parent 3b77837323
commit c06a8a7f7d
+109 -70
View File
@@ -173,33 +173,78 @@
## 快速部署 ## 快速部署
项目提供多种基础镜像,可根据具体环境选择: ### 镜像说明
| 标签 (Tag) | 基础镜像 | 说明 | | 镜像 | 说明 |
| :--- | :--- | :--- | | :--- | :--- |
| `latest` | Debian 12 | **默认推荐**集成 Python 3.13 与 Node.js 23,开箱即用 | | `git.viaeon.com/admin/taskpool:latest` | **本仓库 CI 构建(推荐**React 前端 + Go 后端的 **standalone** 一体镜像(nginx + supervisord |
| `latest-debian13` | Debian 13 | 尝鲜版本,基于 Debian Trixie | | `ghcr.io/engigu/taskpool:latest` | 上游公共镜像(Debian + Mise 完整运行时),适合需要完整语言环境的场景 |
| `latest-minimal` | Debian 13 | **最小化版**:不预置语言环境,由用户通过面板自主按需安装 |
> **提示**:下方部署示例默认使用 `latest` 标签,如需换用 Debian 13 版,只需将 `latest` 替换为 `latest-debian13` 即可。 **本仓库 standalone 镜像端口:**
> **警告**:**架构升级破坏性变更** | 端口 | 说明 |
> | :--- | :--- |
> 本版本(2026.02.13+)对底层运行时环境进行了彻底重构,弃用了原有的静态 Python/Node 环境,转为使用 **Mise** 进行动态版本管理。 | `3000` | Web 面板(nginx 静态资源 + `/api` 反代) |
> | `8052` | Go API / WebSocket 后端 |
> 1. **不再提供 Alpine 镜像**:由于 glibc 兼容性问题,Mise 无法在 Alpine 上完美运行,因此暂时取消 Alpine 镜像支持。
> 2. **环境数据不兼容**:如果您是从旧版本升级上来,原有的 Python/Node 环境数据将无法迁移。升级后您需要:
> - 清空或备份原有的 `envs/` 挂载目录
> - 启动新容器,让系统自动初始化新的 Mise 环境
> - 在面板中重新安装所需的语言和依赖
> 启动后端进程时必须使用:`taskpool server`(无参数只会打印 help 并退出)。
<details> <details>
<summary><b>方式一:环境变量部署(推荐)</b></summary> <summary><b>方式一:本仓库 standalone 镜像(推荐)</b></summary>
通过环境变量指定配置,简单灵活,适合容器编排场景。 ```bash
docker run -d \
--name taskpool \
-p 3000:3000 \
-p 8052:8052 \
-v $(pwd)/data:/app/data \
-v $(pwd)/configs:/app/configs \
-v $(pwd)/envs:/app/envs \
-e TZ=Asia/Shanghai \
-e BH_SERVER_PORT=8052 \
-e BH_SERVER_HOST=0.0.0.0 \
-e BH_DB_TYPE=sqlite \
-e BH_DB_PATH=/app/data/taskpool.db \
-e BH_DB_TABLE_PREFIX=taskpool_ \
-e TASKPOOL_SECRET_KEY=your_secret_key_here \
--restart unless-stopped \
git.viaeon.com/admin/taskpool:latest
```
**使用 SQLite(默认)** **Docker Compose**
```yaml
services:
app:
image: git.viaeon.com/admin/taskpool:latest
container_name: taskpool
ports:
- "3000:3000"
- "8052:8052"
volumes:
- ./data:/app/data
- ./configs:/app/configs
- ./envs:/app/envs
environment:
- TZ=Asia/Shanghai
- BH_SERVER_PORT=8052
- BH_SERVER_HOST=0.0.0.0
- BH_DB_TYPE=sqlite
- BH_DB_PATH=/app/data/taskpool.db
- BH_DB_TABLE_PREFIX=taskpool_
- TASKPOOL_SECRET_KEY=your_secret_key_here
restart: unless-stopped
```
访问:
- 面板:http://localhost:3000
- APIhttp://localhost:8052
</details>
<details>
<summary><b>方式二:环境变量部署(上游完整镜像 / SQLite</b></summary>
```bash ```bash
docker run -d \ docker run -d \
@@ -218,12 +263,6 @@ docker run -d \
ghcr.io/engigu/taskpool:latest ghcr.io/engigu/taskpool:latest
``` ```
> **提示**:如需通过反向代理部署在子路径(如 `/taskpool`),添加环境变量:
> ```bash
> -e BH_SERVER_URL_PREFIX=/taskpool
> ```
> 配置后访问地址为 `http://your-domain.com/taskpool/`,详见下方「URL 前缀配置」说明。
**Docker ComposeSQLite):** **Docker ComposeSQLite):**
```yaml ```yaml
@@ -244,12 +283,6 @@ services:
- BH_DB_PATH=/app/data/taskpool.db - BH_DB_PATH=/app/data/taskpool.db
- BH_DB_TABLE_PREFIX=taskpool_ - BH_DB_TABLE_PREFIX=taskpool_
- TASKPOOL_SECRET_KEY=your_secret_key_here - TASKPOOL_SECRET_KEY=your_secret_key_here
# - BH_SERVER_URL_PREFIX=/taskpool # 可选:配置 URL 前缀用于反向代理
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped restart: unless-stopped
``` ```
@@ -276,41 +309,6 @@ docker run -d \
ghcr.io/engigu/taskpool:latest ghcr.io/engigu/taskpool:latest
``` ```
> **提示**:如需配置 URL 前缀,添加 `-e BH_SERVER_URL_PREFIX=/taskpool`
**Docker ComposeMySQL):**
```yaml
services:
taskpool:
image: ghcr.io/engigu/taskpool:latest
container_name: taskpool
ports:
- "8052:8052"
volumes:
- ./data:/app/data
- ./envs:/app/envs
environment:
- TZ=Asia/Shanghai
- BH_SERVER_PORT=8052
- BH_SERVER_HOST=0.0.0.0
# - BH_SERVER_URL_PREFIX=/taskpool # 可选:配置 URL 前缀
- BH_DB_TYPE=mysql
- BH_DB_HOST=mysql-server
- BH_DB_PORT=3306
- BH_DB_USER=root
- BH_DB_PASSWORD=your_password
- BH_DB_NAME=taskpool
- BH_DB_TABLE_PREFIX=taskpool_
- TASKPOOL_SECRET_KEY=your_secret_key_here
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped
```
</details> </details>
<details> <details>
@@ -600,12 +598,26 @@ nginx -t && nginx -s reload
### 访问面板 ### 访问面板
启动后访问:http://localhost:8052 | 部署方式 | 访问地址 |
| :--- | :--- |
| 本仓库 standalone 镜像 | http://localhost:3000 API: http://localhost:8052 |
| 上游完整镜像 / 仅后端 | http://localhost:8052 |
**默认账号:** 用户名 `admin`,密码见启动日志(首次启动会自动生成 12 位随机密码并打印在日志中) **默认账号:** 用户名 `admin`,密码见启动日志(首次启动会自动生成 12 位随机密码并打印在日志中)
> **注意**:出于安全性考虑,系统不再使用固定默认密码。请在容器启动日志中搜索 `管理员账号创建成功` 找到您的随机密码,并登录后及时修改。 > **注意**:出于安全性考虑,系统不再使用固定默认密码。请在容器启动日志中搜索 `管理员账号创建成功` 找到您的随机密码,并登录后及时修改。
**排查 backend 反复重启:**
```bash
# 正确启动命令
taskpool server
# 容器内日志(standalone / supervisord
docker exec -it taskpool cat /app/logs/backend.err.log
docker exec -it taskpool cat /app/logs/backend.out.log
```
<details> <details>
<summary><b>命令行工具 (CLI)</b></summary> <summary><b>命令行工具 (CLI)</b></summary>
@@ -671,7 +683,7 @@ host = localhost
port = 3306 port = 3306
user = root user = root
password = password =
dbname = bh_panel dbname = taskpool
table_prefix = taskpool_ table_prefix = taskpool_
``` ```
@@ -690,10 +702,10 @@ table_prefix = taskpool_
| `BH_DB_PORT` | database.port | 数据库端口 | 3306 | | `BH_DB_PORT` | database.port | 数据库端口 | 3306 |
| `BH_DB_USER` | database.user | 数据库用户 | root | | `BH_DB_USER` | database.user | 数据库用户 | root |
| `BH_DB_PASSWORD` | database.password | 数据库密码 | - | | `BH_DB_PASSWORD` | database.password | 数据库密码 | - |
| `BH_DB_NAME` | database.dbname | 数据库名称 | bh_panel | | `BH_DB_NAME` | database.dbname | 数据库名称 | taskpool |
| `BH_DB_PATH` | database.path | SQLite 文件路径 | ./data/taskpool.db | | `BH_DB_PATH` | database.path | SQLite 文件路径 | ./data/taskpool.db |
| `BH_DB_TABLE_PREFIX` | database.table_prefix | 表前缀 | taskpool_ | | `BH_DB_TABLE_PREFIX` | database.table_prefix | 表前缀 | taskpool_ |
| `TASKPOOL_SECRET_KEY` | - | 系统加密秘钥,用于机密功能(**注:仅支持环境变量设置,不支持配置文件**) | - | | `TASKPOOL_SECRET_KEY` | - | 系统加密秘钥,用于机密功能(**注:仅支持环境变量设置,不支持配置文件**;兼容旧变量 `BAIHU_SECRET_KEY` | - |
### URL 前缀配置 ### URL 前缀配置
@@ -755,6 +767,33 @@ location /taskpool/ {
</details> </details>
## 本地开发(本仓库)
```bash
# 后端
go build -o bin/taskpool.exe .
./bin/taskpool.exe server
# 前端
cd web
pnpm install
pnpm dev # 默认 :3000,代理 API 到 :8052
```
常用命令:
```bash
taskpool server
taskpool resetpwd admin
taskpool version
```
数据库品牌迁移(可选,旧 `baihu_` 表前缀 → `taskpool_`):
```bash
go run scripts/migrate-db-brand.go -db data/baihu.db -out data/taskpool.db
```
## 免责声明 ⚠️ ## 免责声明 ⚠️
任务池(TaskPool)仅作为一个轻量级的任务托管与调度平台,本项目及相关代码**不提供、不内置任何具有实际业务逻辑的第三方脚本**。 任务池(TaskPool)仅作为一个轻量级的任务托管与调度平台,本项目及相关代码**不提供、不内置任何具有实际业务逻辑的第三方脚本**。