File size: 1,473 Bytes
9ebc93f 9ec46e6 9ebc93f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # 使用官方轻量级 Python 镜像
FROM python:3.11-slim AS builder
# 设置工作目录
WORKDIR /app
# 设置环境变量,防止 Python 产生 pyc 文件及启用缓存流
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# 安装编译 cffi 等包所需的系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
libffi-dev \
python3-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
# 创建 requirements.txt
COPY <<EOF ./requirements.txt
annotated-doc==0.0.4
annotated-types==0.7.0
anyio==4.12.1
certifi==2026.1.4
cffi==2.0.0
click==8.3.1
colorama==0.4.6
curl-cffi==0.14.0
fastapi==0.128.0
h11==0.16.0
h2==4.3.0
hpack==4.1.0
httpcore==1.0.9
httpx==0.28.1
hyperframe==6.1.0
idna==3.11
pycparser==3.0
pydantic==2.12.5
pydantic-core==2.41.5
starlette==0.50.0
typing-extensions==4.15.0
typing-inspection==0.4.2
uvicorn==0.40.0
slowapi
EOF
# 安装依赖到本地用户目录
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
# --- 最终运行阶段 ---
FROM python:3.11-slim
WORKDIR /app
# 从构建阶段拷贝已安装的库
COPY --from=builder /install /usr/local
# 拷贝启动脚本
COPY entrypoint.sh /app/entrypoint.sh
# 安装运行所需的最小化工具 (curl) 并赋予脚本执行权限
RUN apt-get update && apt-get install -y curl --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& chmod +x /app/entrypoint.sh
# 设置入口
ENTRYPOINT ["/app/entrypoint.sh"] |