chatsdk / Dockerfile
StarrySkyWorld's picture
Update Dockerfile
9ec46e6 verified
# 使用官方轻量级 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"]