# =============================================================================
# 企微智能IT支持服务台 — 后端 Docker 镜像构建文件
# =============================================================================
# 说明：基于 Python 3.12 构建后端镜像
# 用法：docker build -t wecom-it-desk-backend .
# =============================================================================

# --------------------------------------------------------------------------
# 第一阶段：构建阶段
# --------------------------------------------------------------------------
FROM python:3.12-slim AS builder

# 设置工作目录
WORKDIR /app

# 安装系统依赖（psycopg2 编译需要）
RUN apt-get update && \
    apt-get install -y --no-install-recommends gcc libpq-dev && \
    rm -rf /var/lib/apt/lists/*

# 复制依赖声明文件并安装（利用 Docker 层缓存，依赖不变则不重新安装）
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# --------------------------------------------------------------------------
# 第二阶段：运行阶段（更小的镜像体积）
# --------------------------------------------------------------------------
FROM python:3.12-slim

# 设置标签信息
LABEL maintainer="IT服务台开发团队"
LABEL description="企微智能IT支持服务台后端服务"

# 安装运行时依赖（psycopg2 运行时需要 libpq）
RUN apt-get update && \
    apt-get install -y --no-install-recommends libpq5 && \
    rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /app

# 从构建阶段复制已安装的 Python 包
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin

# 复制项目代码
COPY . .

# 暴露端口
EXPOSE 8000

# 启动命令（Docker Compose 中会覆盖为 alembic upgrade head + uvicorn）
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
