lanny xu commited on
Commit
d86cb9a
·
1 Parent(s): 628a042

Switch to debug mode: Disable Ollama, only run FastAPI

Browse files
Files changed (1) hide show
  1. Dockerfile +16 -50
Dockerfile CHANGED
@@ -1,83 +1,49 @@
1
  # 使用 Python 3.11 作为基础镜像
2
  FROM python:3.11-slim
3
 
4
- # 设置非交互式前端,防止 apt-get 卡住或报错
5
  ENV DEBIAN_FRONTEND=noninteractive
6
 
7
  # 设置工作目录
8
  WORKDIR /app
9
 
10
- # 安装系统依赖
11
- # curl: 下载 Ollama
12
- # build-essential: 编译依赖
13
- # procps: 提供 ps 命令用于调试
14
  RUN apt-get update && apt-get install -y \
15
- curl \
16
- build-essential \
17
  procps \
18
  && rm -rf /var/lib/apt/lists/*
19
 
20
- # 安装 Ollama
21
- RUN curl -fsSL https://ollama.com/install.sh | sh
22
 
23
- # 复制依赖文件并安装
24
  COPY requirements.txt .
25
- # 稍微放宽版本限制以避免安装失败
26
  RUN pip install --no-cache-dir -r requirements.txt
27
 
28
- # 复制项目文件
29
  COPY . .
30
 
31
- # 创建启动脚本
32
- # 优化策略:
33
- # 1. 显式设置 OLLAMA_HOST 为本地
34
- # 2. 增加日志输出
35
  RUN echo '#!/bin/bash\n\
36
- export OLLAMA_MODELS=/home/user/.ollama/models\n\
37
- export OLLAMA_HOST=127.0.0.1:11434\n\
38
  \n\
39
- echo "🚀 Starting application..."\n\
40
- \n\
41
- # 先启动 FastAPI,确保端口被监听,防止 Space 认为启动失败\n\
42
- # 使用 nohup 后台运行 FastAPI\n\
43
- echo "🟢 Starting FastAPI Server..."\n\
44
- nohup uvicorn server:app --host 0.0.0.0 --port 7860 > server.log 2>&1 &\n\
45
- PID=$!\n\
46
- echo "✅ FastAPI started with PID $PID"\n\
47
- \n\
48
- # 启动 Ollama\n\
49
- echo "🔴 Starting Ollama..."\n\
50
- ollama serve > ollama.log 2>&1 &\n\
51
- \n\
52
- # 等待一会\n\
53
- sleep 5\n\
54
- \n\
55
- # 尝试拉取模型 (如果失败也不要让容器崩溃)\n\
56
- echo "⬇️ Pulling model..."\n\
57
- ollama pull tinyllama || echo "⚠️ Model pull failed, but continuing..."\n\
58
- \n\
59
- # 保持主进程运行,并监控日志\n\
60
- tail -f server.log ollama.log\n\
61
  ' > start.sh && chmod +x start.sh
62
 
63
- # 创建非 root 用户 (Hugging Face 安全要求)
64
  RUN useradd -m -u 1000 user
65
-
66
- # 确保目录存在并赋予权限
67
- RUN mkdir -p /home/user/.ollama/models && chown -R user:user /home/user/.ollama
68
  RUN mkdir -p /app && chown -R user:user /app
69
 
70
  # 切换用户
71
  USER user
72
 
73
- # 设置环境变量
74
  ENV HOME=/home/user
75
  ENV PATH=$HOME/.local/bin:$PATH
76
- ENV OLLAMA_MODELS=$HOME/.ollama/models
77
- ENV OLLAMA_HOST=127.0.0.1:11434
78
 
79
- # 暴露端口 (Hugging Face 默认端口)
80
  EXPOSE 7860
81
 
82
- # 启动命令:使用绝对路径并显式调用 bash,确保能执行
83
- CMD ["/bin/bash", "/app/start.sh"]
 
1
  # 使用 Python 3.11 作为基础镜像
2
  FROM python:3.11-slim
3
 
4
+ # 设置非交互式前端
5
  ENV DEBIAN_FRONTEND=noninteractive
6
 
7
  # 设置工作目录
8
  WORKDIR /app
9
 
10
+ # 1. 只安装最基础的系统依赖 (去掉了 curl 和 build-essential 以加快构建)
 
 
 
11
  RUN apt-get update && apt-get install -y \
 
 
12
  procps \
13
  && rm -rf /var/lib/apt/lists/*
14
 
15
+ # 2. 暂时跳过 Ollama 安装 (先验证 Python 环境)
16
+ # RUN curl -fsSL https://ollama.com/install.sh | sh
17
 
18
+ # 3. 安装 Python 依赖
19
  COPY requirements.txt .
 
20
  RUN pip install --no-cache-dir -r requirements.txt
21
 
22
+ # 4. 复制项目文件
23
  COPY . .
24
 
25
+ # 5. 创建极简启动脚本 (只启动 FastAPI)
 
 
 
26
  RUN echo '#!/bin/bash\n\
27
+ echo "🚀 Starting FastAPI ONLY (Debug Mode)..."\n\
28
+ export DISABLE_OLLAMA=true\n\
29
  \n\
30
+ # 启动 FastAPI\n\
31
+ # --workers 1 限制进程数,节省内存\n\
32
+ uvicorn server:app --host 0.0.0.0 --port 7860 --workers 1\n\
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  ' > start.sh && chmod +x start.sh
34
 
35
+ # 创建非 root 用户
36
  RUN useradd -m -u 1000 user
 
 
 
37
  RUN mkdir -p /app && chown -R user:user /app
38
 
39
  # 切换用户
40
  USER user
41
 
 
42
  ENV HOME=/home/user
43
  ENV PATH=$HOME/.local/bin:$PATH
 
 
44
 
45
+ # 暴露端口
46
  EXPOSE 7860
47
 
48
+ # 启动命令
49
+ CMD ["/app/start.sh"]