diff --git a/README.md b/README.md index a3d378c..0696750 100644 --- a/README.md +++ b/README.md @@ -171,35 +171,80 @@ ![taskpool-display.gif](https://raw.githubusercontent.com/engigu/resources/refs/heads/images/taskpool-display.gif) -## 快速部署 +## 快速部署 -项目提供多种基础镜像,可根据具体环境选择: +### 镜像说明 -| 标签 (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 并退出)。
-方式一:环境变量部署(推荐) +方式一:本仓库 standalone 镜像(推荐) -通过环境变量指定配置,简单灵活,适合容器编排场景。 +```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 + +
+ +
+方式二:环境变量部署(上游完整镜像 / SQLite) ```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 -``` -
@@ -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 +``` +
命令行工具 (CLI) @@ -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/ {
+## 本地开发(本仓库) + +```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)仅作为一个轻量级的任务托管与调度平台,本项目及相关代码**不提供、不内置任何具有实际业务逻辑的第三方脚本**。