# 多阶段构建 - 构建阶段 FROM python:3.11-slim as builder # 安装构建依赖 RUN apt-get update && apt-get install -y \ gcc \ curl \ && rm -rf /var/lib/apt/lists/* # 设置虚拟环境 RUN python -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" # 复制并安装依赖 COPY requirements.txt . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # 运行阶段 - 更小的镜像 FROM python:3.11-slim # 安装运行时依赖(curl用于健康检查) RUN apt-get update && apt-get install -y \ curl \ && rm -rf /var/lib/apt/lists/* && \ groupadd -r app && useradd -r -g app app # 从构建阶段复制虚拟环境 COPY --from=builder /opt/venv /opt/venv # 设置环境变量 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV PATH="/opt/venv/bin:$PATH" # 创建工作目录并设置权限 WORKDIR /app RUN chown app:app /app USER app # 复制应用代码 COPY --chown=app:app main.py . COPY --chown=app:app test_api.py . # 暴露端口 EXPOSE 8080 # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8080/v1/models || exit 1 # 启动命令 CMD ["python", "main.py"]