docs: update README for React frontend and standalone Docker deploy
Build and Deploy / build-and-push (push) Successful in 51s
Build and Deploy / build-and-push (push) Successful in 51s
This commit is contained in:
@@ -171,35 +171,80 @@
|
||||

|
||||
<!-- TODO: 添加效果图 -->
|
||||
|
||||
## 快速部署
|
||||
## 快速部署
|
||||
|
||||
项目提供多种基础镜像,可根据具体环境选择:
|
||||
### 镜像说明
|
||||
|
||||
| 标签 (Tag) | 基础镜像 | 说明 |
|
||||
| :--- | :--- | :--- |
|
||||
| `latest` | Debian 12 | **默认推荐**:集成 Python 3.13 与 Node.js 23,开箱即用 |
|
||||
| `latest-debian13` | Debian 13 | 尝鲜版本,基于 Debian Trixie |
|
||||
| `latest-minimal` | Debian 13 | **最小化版**:不预置语言环境,由用户通过面板自主按需安装 |
|
||||
| 镜像 | 说明 |
|
||||
| :--- | :--- |
|
||||
| `git.viaeon.com/admin/taskpool:latest` | **本仓库 CI 构建(推荐)**:React 前端 + Go 后端的 **standalone** 一体镜像(nginx + supervisord) |
|
||||
| `ghcr.io/engigu/taskpool:latest` | 上游公共镜像(Debian + Mise 完整运行时),适合需要完整语言环境的场景 |
|
||||
|
||||
> **提示**:下方部署示例默认使用 `latest` 标签,如需换用 Debian 13 版,只需将 `latest` 替换为 `latest-debian13` 即可。
|
||||
**本仓库 standalone 镜像端口:**
|
||||
|
||||
> **警告**:**架构升级破坏性变更**
|
||||
>
|
||||
> 本版本(2026.02.13+)对底层运行时环境进行了彻底重构,弃用了原有的静态 Python/Node 环境,转为使用 **Mise** 进行动态版本管理。
|
||||
>
|
||||
> 1. **不再提供 Alpine 镜像**:由于 glibc 兼容性问题,Mise 无法在 Alpine 上完美运行,因此暂时取消 Alpine 镜像支持。
|
||||
> 2. **环境数据不兼容**:如果您是从旧版本升级上来,原有的 Python/Node 环境数据将无法迁移。升级后您需要:
|
||||
> - 清空或备份原有的 `envs/` 挂载目录
|
||||
> - 启动新容器,让系统自动初始化新的 Mise 环境
|
||||
> - 在面板中重新安装所需的语言和依赖
|
||||
| 端口 | 说明 |
|
||||
| :--- | :--- |
|
||||
| `3000` | Web 面板(nginx 静态资源 + `/api` 反代) |
|
||||
| `8052` | Go API / WebSocket 后端 |
|
||||
|
||||
> 启动后端进程时必须使用:`taskpool server`(无参数只会打印 help 并退出)。
|
||||
|
||||
<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
|
||||
- API:http://localhost:8052
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>方式二:环境变量部署(上游完整镜像 / SQLite)</b></summary>
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
@@ -218,12 +263,6 @@ docker run -d \
|
||||
ghcr.io/engigu/taskpool:latest
|
||||
```
|
||||
|
||||
> **提示**:如需通过反向代理部署在子路径(如 `/taskpool`),添加环境变量:
|
||||
> ```bash
|
||||
> -e BH_SERVER_URL_PREFIX=/taskpool
|
||||
> ```
|
||||
> 配置后访问地址为 `http://your-domain.com/taskpool/`,详见下方「URL 前缀配置」说明。
|
||||
|
||||
**Docker Compose(SQLite):**
|
||||
|
||||
```yaml
|
||||
@@ -244,12 +283,6 @@ services:
|
||||
- BH_DB_PATH=/app/data/taskpool.db
|
||||
- BH_DB_TABLE_PREFIX=taskpool_
|
||||
- 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
|
||||
```
|
||||
|
||||
@@ -276,41 +309,6 @@ docker run -d \
|
||||
ghcr.io/engigu/taskpool:latest
|
||||
```
|
||||
|
||||
> **提示**:如需配置 URL 前缀,添加 `-e BH_SERVER_URL_PREFIX=/taskpool`
|
||||
|
||||
**Docker Compose(MySQL):**
|
||||
|
||||
```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>
|
||||
@@ -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 位随机密码并打印在日志中)
|
||||
|
||||
> **注意**:出于安全性考虑,系统不再使用固定默认密码。请在容器启动日志中搜索 `管理员账号创建成功` 找到您的随机密码,并登录后及时修改。
|
||||
|
||||
**排查 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>
|
||||
<summary><b>命令行工具 (CLI)</b></summary>
|
||||
|
||||
@@ -671,7 +683,7 @@ host = localhost
|
||||
port = 3306
|
||||
user = root
|
||||
password =
|
||||
dbname = bh_panel
|
||||
dbname = taskpool
|
||||
table_prefix = taskpool_
|
||||
```
|
||||
|
||||
@@ -690,10 +702,10 @@ table_prefix = taskpool_
|
||||
| `BH_DB_PORT` | database.port | 数据库端口 | 3306 |
|
||||
| `BH_DB_USER` | database.user | 数据库用户 | root |
|
||||
| `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_TABLE_PREFIX` | database.table_prefix | 表前缀 | taskpool_ |
|
||||
| `TASKPOOL_SECRET_KEY` | - | 系统加密秘钥,用于机密功能(**注:仅支持环境变量设置,不支持配置文件**) | - |
|
||||
| `TASKPOOL_SECRET_KEY` | - | 系统加密秘钥,用于机密功能(**注:仅支持环境变量设置,不支持配置文件**;兼容旧变量 `BAIHU_SECRET_KEY`) | - |
|
||||
|
||||
### URL 前缀配置
|
||||
|
||||
@@ -755,6 +767,33 @@ location /taskpool/ {
|
||||
|
||||
</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)仅作为一个轻量级的任务托管与调度平台,本项目及相关代码**不提供、不内置任何具有实际业务逻辑的第三方脚本**。
|
||||
|
||||
Reference in New Issue
Block a user