# === 阶段1:构建 Backend === FROM python:3.11-slim AS backend-builder RUN rm -f /etc/apt/sources.list && \ rm -rf /etc/apt/sources.list.d/* && \ echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \ echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ apt-get update && \ apt-get install -y ffmpeg && \ rm -rf /var/lib/apt/lists/* ENV PATH="/usr/bin:${PATH}" ENV HF_ENDPOINT=https://hf-mirror.com WORKDIR /tmp/backend COPY ./backend /tmp/backend RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt # === 阶段2:构建 Frontend === FROM node:18-alpine AS frontend-builder RUN npm install -g pnpm WORKDIR /tmp/frontend COPY ./BillNote_frontend /tmp/frontend RUN pnpm install && pnpm run build # === 阶段3:完整应用镜像 === FROM python:3.11-slim # 安装必要的运行时依赖 RUN rm -f /etc/apt/sources.list && \ rm -rf /etc/apt/sources.list.d/* && \ echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \ echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ apt-get update && \ apt-get install -y ffmpeg nginx supervisor procps && \ rm -rf /var/lib/apt/lists/* ENV PATH="/usr/bin:${PATH}" ENV HF_ENDPOINT=https://hf-mirror.com ENV PYTHONUNBUFFERED=1 # 复制 Python 依赖 COPY --from=backend-builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages COPY --from=backend-builder /usr/local/bin /usr/local/bin # 复制 backend 代码 COPY ./backend /app/backend WORKDIR /app/backend # 复制前端静态文件到 nginx COPY --from=frontend-builder /tmp/frontend/dist /usr/share/nginx/html # 配置 nginx RUN rm -rf /etc/nginx/conf.d/default.conf COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf # 创建 supervisor 配置 RUN mkdir -p /var/log/supervisor COPY <