# ============================================================================= # 企微IT智能服务台 — 后端 Docker 镜像构建文件 # ============================================================================= # 说明:基于 Python 3.12 构建后端镜像 # 用法:docker build -t wecom-it-desk-backend . # ============================================================================= # -------------------------------------------------------------------------- # 第一阶段:构建阶段 # -------------------------------------------------------------------------- FROM python:3.12-slim AS builder # 设置工作目录 WORKDIR /app # 安装系统依赖(psycopg2 编译需要 + qrcode 图片处理需要 + healthcheck 需要 curl) RUN apt-get update && \ apt-get install -y --no-install-recommends gcc libpq-dev libjpeg-dev zlib1g-dev curl && \ rm -rf /var/lib/apt/lists/* # 复制依赖声明文件并安装(利用 Docker 层缓存,依赖不变则不重新安装) # 使用清华大学 PyPI 镜像源,解决公司内网下载 PyPI 官方源超时问题 COPY requirements.txt . RUN pip install --no-cache-dir \ --timeout 120 \ --retries 5 \ -i https://pypi.tuna.tsinghua.edu.cn/simple/ \ --trusted-host pypi.tuna.tsinghua.edu.cn \ -r requirements.txt # -------------------------------------------------------------------------- # 第二阶段:运行阶段(更小的镜像体积) # -------------------------------------------------------------------------- FROM python:3.12-slim # 设置标签信息 LABEL maintainer="IT服务台开发团队" LABEL description="企微IT智能服务台后端服务" # 安装运行时依赖(psycopg2 运行时需要 libpq + healthcheck 需要 curl) RUN apt-get update && \ apt-get install -y --no-install-recommends libpq5 curl && \ 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"]