diff --git a/Dockerfile b/Dockerfile index e656468603..73e7e290d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,11 @@ -FROM python:3.11 +FROM node:22.12.0-bookworm-slim AS node_runtime -# 安装 Node.js (满足 >=18)及必要工具 -RUN apt-get update \ - && apt-get install -y --no-install-recommends nodejs npm \ - && rm -rf /var/lib/apt/lists/* +FROM python:3.11-bookworm +RUN apt-get update && apt-get upgrade -y && rm -rf /var/lib/apt/lists/* +# 复制完整 Node.js 运行时目录,保留 npm/npx/corepack 的内部链接关系 +COPY --from=node_runtime /usr/local/ /usr/local/ +RUN pip install --upgrade pip # 从 uv 官方镜像复制 uv COPY --from=ghcr.io/astral-sh/uv:0.9.26 /uv /uvx /bin/ @@ -26,4 +27,4 @@ COPY . . EXPOSE 3000 5001 # 同时启动前后端(开发模式) -CMD ["npm", "run", "dev"] \ No newline at end of file +CMD ["npm", "run"] diff --git a/README-ZH.md b/README-ZH.md index 0b20424d3a..376fc6dee6 100644 --- a/README-ZH.md +++ b/README-ZH.md @@ -99,7 +99,7 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体 | 工具 | 版本要求 | 说明 | 安装检查 | |------|---------|------|---------| -| **Node.js** | 18+ | 前端运行环境,包含 npm | `node -v` | +| **Node.js** | 20.19+ 或 22.12+ | 前端运行环境,包含 npm | `node -v` | | **Python** | ≥3.11, ≤3.12 | 后端运行环境 | `python --version` | | **uv** | 最新版 | Python 包管理器 | `uv --version` | diff --git a/README.md b/README.md index 4b8369f4cf..3eb8ab9230 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ Click the image to watch MiroFish's deep prediction of the lost ending based on | Tool | Version | Description | Check Installation | |------|---------|-------------|-------------------| -| **Node.js** | 18+ | Frontend runtime, includes npm | `node -v` | +| **Node.js** | 20.19+ or 22.12+ | Frontend runtime, includes npm | `node -v` | | **Python** | ≥3.11, ≤3.12 | Backend runtime | `python --version` | | **uv** | Latest | Python package manager | `uv --version` | @@ -200,4 +200,4 @@ MiroFish's simulation engine is powered by **[OASIS (Open Agent Social Interacti Star History Chart - \ No newline at end of file + diff --git a/docker-compose.yml b/docker-compose.yml index 637f1dfaee..7b0b301d7b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: mirofish: - image: ghcr.io/666ghj/mirofish:latest + image: rezadevil/mirofish # 加速镜像(如拉取缓慢可替换上方地址) # image: ghcr.nju.edu.cn/666ghj/mirofish:latest container_name: mirofish diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 3e56d752df..ee73b5654f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -17,6 +17,9 @@ "devDependencies": { "@vitejs/plugin-vue": "^6.0.1", "vite": "^7.2.4" + }, + "engines": { + "node": ">=20.19.0" } }, "node_modules/@babel/helper-string-parser": { diff --git a/frontend/package.json b/frontend/package.json index 1501b628f9..1a50a625a5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -18,5 +18,8 @@ "devDependencies": { "@vitejs/plugin-vue": "^6.0.1", "vite": "^7.2.4" + }, + "engines": { + "node": ">=20.19.0" } } diff --git a/frontend/vite.config.js b/frontend/vite.config.js index 8f1e4c11b5..d860f3069b 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -13,7 +13,8 @@ export default defineConfig({ }, server: { port: 3000, - open: true, + // Containers usually don't have xdg-open; keep browser auto-open opt-in. + open: process.env.VITE_OPEN_BROWSER === 'true', proxy: { '/api': { target: 'http://localhost:5001', diff --git a/package-lock.json b/package-lock.json index 64b5f2fbab..62156830f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "concurrently": "^9.1.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.19.0" } }, "node_modules/ansi-regex": { diff --git a/package.json b/package.json index 63ace21a99..8df6bd77d1 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "concurrently": "^9.1.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.19.0" }, "license": "AGPL-3.0" }