| FROM python:3.11 | |
| # 安装 Node.js (满足 >=18)及必要工具 | |
| RUN apt-get update \ | |
| && apt-get install -y --no-install-recommends nodejs npm \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 从 uv 官方镜像复制 uv | |
| COPY --from=ghcr.io/astral-sh/uv:0.9.26 /uv /uvx /bin/ | |
| WORKDIR /app | |
| # 先复制依赖描述文件以利用缓存 | |
| COPY frontend/package.json frontend/package-lock.json ./frontend/ | |
| COPY backend/pyproject.toml backend/uv.lock ./backend/ | |
| # 安装依赖(Node + Python) | |
| RUN npm ci --prefix frontend \ | |
| && cd backend && uv sync --frozen --no-dev | |
| # 复制项目源码 | |
| COPY . . | |
| # 构建前端静态资源 | |
| RUN npm run build --prefix frontend | |
| ENV FLASK_HOST=0.0.0.0 \ | |
| FLASK_PORT=7860 \ | |
| FLASK_DEBUG=false | |
| EXPOSE 7860 | |
| # 启动后端并托管前端静态文件 | |
| CMD ["sh", "-lc", "cd /app/backend && .venv/bin/python run.py"] | |