leonsimon23 commited on
Commit
4e1422a
·
verified ·
1 Parent(s): 102d5e1

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +45 -22
Dockerfile CHANGED
@@ -1,40 +1,63 @@
1
  # 使用官方Python 3.10 slim镜像
2
  FROM python:3.10-slim
3
 
4
- # --- 安装系统依赖 ---
5
  RUN apt-get update && apt-get install -y --no-install-recommends \
6
  git \
 
 
 
7
  curl \
8
  && rm -rf /var/lib/apt/lists/*
9
 
10
- # --- 设置工作目录 ---
11
- WORKDIR /app
12
-
13
- # --- 克隆代码仓库 ---
14
- ARG GH_USER
15
- ARG GH_TOKEN
16
- RUN git clone https://${GH_USER}:${GH_TOKEN}@github.com/leoncool23/tcm_expert_builder.git . && \
17
- ls -la
18
-
19
- # --- 安装Python依赖 ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  RUN pip install --no-cache-dir --upgrade pip && \
21
  pip install --no-cache-dir -r requirements.txt
22
 
23
- # --- 配置环境变量 ---
24
  ENV NLTK_DATA=/usr/local/share/nltk_data
25
  ENV ANONYMIZED_TELEMETRY=false
 
 
26
 
27
- # --- 下载NLTK数据 ---
28
- RUN python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords')"
29
-
30
- # --- 创建必要目录 ---
31
- RUN mkdir -p uploads data/vector_db data
32
 
33
- # --- 添加健康检查端点到你的Flask应用 ---
34
- # 在app.py中添加: @app.route('/health') def health(): return {'status': 'ok'}
 
35
 
36
- # --- 暴露端口 ---
37
  EXPOSE 7860
38
 
39
- # --- 启动应用 ---
40
- CMD ["python", "app.py"]
 
1
  # 使用官方Python 3.10 slim镜像
2
  FROM python:3.10-slim
3
 
4
+ # --- 1. 安装系统依赖 ---
5
  RUN apt-get update && apt-get install -y --no-install-recommends \
6
  git \
7
+ git-lfs \
8
+ build-essential \
9
+ libgomp1 \
10
  curl \
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
+ # --- 2. 设置工作目录 ---
14
+ WORKDIR /src
15
+
16
+ # --- 3. Git LFS初始化 ---
17
+ RUN git lfs install
18
+
19
+ # --- 4. 关键步骤:克隆私有仓库 ---
20
+ # 保持你原有的secrets挂载方式,但添加调试和错误处理
21
+ RUN --mount=type=secret,id=GH_USER \
22
+ --mount=type=secret,id=GH_TOKEN \
23
+ echo "Checking secrets..." && \
24
+ ls -la /run/secrets/ && \
25
+ GH_USER=$(cat /run/secrets/GH_USER) && \
26
+ GH_TOKEN=$(cat /run/secrets/GH_TOKEN) && \
27
+ echo "User: ${GH_USER}" && \
28
+ echo "Starting git clone..." && \
29
+ git clone https://${GH_USER}:${GH_TOKEN}@github.com/leoncool23/tcm_expert_builder.git && \
30
+ echo "Clone completed successfully" && \
31
+ ls -la tcm_expert_builder/
32
+
33
+ # --- 5. 切换到项目目录 ---
34
+ WORKDIR /src/tcm_expert_builder
35
+
36
+ # --- 6. 验证关键文件存在 ---
37
+ RUN echo "Current directory:" && pwd && \
38
+ echo "Directory contents:" && ls -la && \
39
+ echo "Checking requirements.txt:" && cat requirements.txt
40
+
41
+ # --- 7. 安装Python依赖 ---
42
  RUN pip install --no-cache-dir --upgrade pip && \
43
  pip install --no-cache-dir -r requirements.txt
44
 
45
+ # --- 8. 配置NLTK和ChromaDB环境 ---
46
  ENV NLTK_DATA=/usr/local/share/nltk_data
47
  ENV ANONYMIZED_TELEMETRY=false
48
+ RUN python -m nltk.downloader -d $NLTK_DATA punkt stopwords || \
49
+ python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords')"
50
 
51
+ # --- 9. 创建用户和设置权限 ---
52
+ RUN useradd --create-home --shell /bin/bash appuser
53
+ RUN chown -R appuser:appuser /src
 
 
54
 
55
+ # --- 10. 以appuser身份创建目录 ---
56
+ USER appuser
57
+ RUN mkdir -p ./uploads ./data/vector_db ./data
58
 
59
+ # --- 11. 暴露端口 ---
60
  EXPOSE 7860
61
 
62
+ # --- 12. 启动应用(保持你原有的gunicorn方式,但添加更多日志) ---
63
+ CMD ["gunicorn", "--workers", "1", "--bind", "0.0.0.0:7860", "--timeout", "120", "--log-level", "debug", "--access-logfile", "-", "--error-logfile", "-", "app:app"]