# =========================== # 秒思智能审核平台 - Backend Dockerfile # 多阶段构建,基于 python:3.13-slim # =========================== # ---------- Stage 1: 构建依赖 ---------- FROM python:3.13-slim AS builder WORKDIR /build # 安装编译依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ libpq-dev \ && rm -rf /var/lib/apt/lists/* # 复制依赖描述文件 COPY pyproject.toml . # 安装 Python 依赖到 /build/deps RUN pip install --no-cache-dir --prefix=/build/deps . # ---------- Stage 2: 运行时镜像 ---------- FROM python:3.13-slim AS runtime WORKDIR /app # 安装运行时系统依赖(FFmpeg 用于视频处理,libpq 用于 PostgreSQL) RUN apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ libpq5 \ curl \ && rm -rf /var/lib/apt/lists/* # 从 builder 阶段复制已安装的 Python 依赖 COPY --from=builder /build/deps /usr/local # 复制应用代码 COPY app/ ./app/ COPY alembic/ ./alembic/ COPY alembic.ini . COPY pyproject.toml . # 创建非 root 用户 RUN groupadd -r miaosi && useradd -r -g miaosi -d /app -s /sbin/nologin miaosi \ && mkdir -p /tmp/videos \ && chown -R miaosi:miaosi /app /tmp/videos USER miaosi EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD curl -f http://localhost:8000/health || exit 1 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]