fix(docker): 镜像内置 stock-sdk 插件依赖(Node + node_modules) (#59)

Docker 运行时镜像(python:3.11-slim)既无 node 也无 node_modules,
导致 stock-sdk 插件 availability() 恒返回 false, 用户反馈打成 docker 后无法安装。

多阶段构建:
- 新增 stocksdk-builder 阶段(node:20-bookworm-slim)npm ci 装依赖
- runtime 阶段 apt 装 nodejs(满足 engines>=18, 自带全部动态依赖)
- COPY --from 将 vendored node_modules 拷到与 bridge.mjs 同目录
  (/app/app/plugins/stocksdk/node_modules), 命中 bridge.mjs loadSDK() 第一候选路径

用户 docker pull 后开箱即用, 无需进容器手动 npm install。
同步更新 plugin.yaml install_hint 文案与相关文档。

Co-authored-by: shy3130 <shy3130@users.noreply.github.com>
This commit is contained in:
wshy
2026-07-06 22:26:43 +08:00
committed by GitHub
co-authored by shy3130
parent 9f78fdebd4
commit 3656fedc62
5 changed files with 40 additions and 4 deletions
+2
View File
@@ -45,6 +45,8 @@ docker compose up --build
Docker 采用两阶段构建,前端 dist 拷进后端镜像,**单容器**运行,数据完全在自己手里。
> 💡 镜像已内置 Node.js 运行时并预装 **stock-sdk** 插件依赖,Docker 部署下开箱即用,无需手动 `npm install`。
更新到新版本:
```bash
+6 -2
View File
@@ -1,7 +1,9 @@
# 数据源插件开发指南
数据源插件是可选的行情数据来源(stock-sdk、akshare 等),作为独立模块放在
`backend/app/plugins/` 下。用户**手动安装依赖**后才可用;不安装完全不影响主功能。
`backend/app/plugins/` 下。用户**手动安装依赖**后才可用(开发模式);不安装完全不影响主功能。
> 💡 **Docker 部署已预装**:内置插件(如 stock-sdk)的 Node 运行时与 `node_modules` 已在镜像构建期装好,Docker 下无需手动 `npm install`,开箱即用。下方"手动安装依赖"仅适用于开发模式。
## 快速上手
@@ -32,7 +34,9 @@ install_hint: "pip install xxx" # 未装依赖时显示的安装提示
| runtime | 含义 | 典型场景 |
|---|---|---|
| `python` | 纯 Python 依赖, `pip install` | akshare、tushare |
| `node` | 需要 Node.js 运行时, `npm install` | stock-sdk |
| `node` | 需要 Node.js 运行时, `npm install` | stock-sdk(已内置,见下) |
> stock-sdk 在 Docker 镜像里已预装 Node 运行时与依赖;开发模式下才需手动 `npm install`。
| `none` | 无额外依赖 | 纯 HTTP API 源 |
`runtime` 字段当前仅用于 UI 展示, 实际依赖检测由 `check` 函数负责。