StarrySkyWorld commited on
Commit
9ebc93f
·
verified ·
1 Parent(s): 43de64e

Create Dockerfile

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