# 使用多阶段构建以减少最终镜像大小 | |
FROM node:18-alpine as frontend-builder | |
# 安装git | |
RUN apk add --no-cache git | |
# 克隆代码库 | |
RUN git clone https://github.com/lanzhihong6/stock-scanner.git /app | |
# 设置前端工作目录 | |
WORKDIR /app/frontend | |
# 安装依赖并构建前端 | |
RUN npm ci && npm run build | |
# 后端阶段 | |
FROM python:3.10-slim | |
# 设置工作目录 | |
WORKDIR /app | |
# 安装git和运行时依赖 | |
RUN apt-get update && apt-get install -y \ | |
git \ | |
libgl1-mesa-glx \ | |
ca-certificates \ | |
&& rm -rf /var/lib/apt/lists/* | |
# 克隆代码库 | |
RUN git clone https://github.com/lanzhihong6/stock-scanner.git /app && \ | |
chmod -R 777 /app && \ | |
chmod +x /app/web_server.py | |
# 安装Python依赖 | |
RUN pip install --no-cache-dir -r requirements.txt | |
# 从前端构建阶段复制生成的静态文件到后端的前端目录 | |
COPY --from=frontend-builder /app/frontend/dist /app/frontend/dist | |
# 暴露端口 | |
EXPOSE 7860 | |
# 启动命令 | |
CMD ["python", "web_server.py"] |