# ====================================================================== # 多阶段构建:Stage 1 构建依赖 -> Stage 2 运行 # ====================================================================== FROM python:3.12-slim AS builder WORKDIR /build # 复制依赖清单 COPY pyproject.toml poetry.lock* ./ # 安装 poetry 并导出 requirements RUN pip install --no-cache-dir poetry \ && poetry export -f requirements.txt -o requirements.txt --without-hashes # ====================================================================== FROM python:3.12-slim AS runtime ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ TZ=Asia/Shanghai WORKDIR /data/apps # 安装运行依赖 COPY --from=builder /build/requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # 复制项目文件 COPY src ./src COPY app.py ./ COPY alembic ./alembic COPY alembic.ini ./ COPY .env.example ./.env COPY scripts ./scripts COPY templates ./templates COPY static ./static # 创建运行时目录 RUN mkdir -p uploads logs EXPOSE 8041 # 启动应用 CMD ["python", "app.py"]