leonsimon23 commited on
Commit
7ef3a82
·
verified ·
1 Parent(s): 2047149

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +38 -20
Dockerfile CHANGED
@@ -1,6 +1,7 @@
1
- # 调试版本 - 用于排查问题
2
  FROM python:3.10-slim
3
 
 
4
  RUN apt-get update && apt-get install -y --no-install-recommends \
5
  git \
6
  git-lfs \
@@ -9,37 +10,54 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
9
  curl \
10
  && rm -rf /var/lib/apt/lists/*
11
 
 
12
  WORKDIR /src
 
 
13
  RUN git lfs install
14
 
15
- # 详细调试secrets和git clone(修复bash语法问题)
 
16
  RUN --mount=type=secret,id=GH_USER \
17
  --mount=type=secret,id=GH_TOKEN \
18
- echo "=== 调试信息开始 ===" && \
19
- echo "检查secrets目录:" && \
20
  ls -la /run/secrets/ && \
21
- echo "GH_USER内容:" && \
22
- cat /run/secrets/GH_USER && \
23
- echo "GH_TOKEN长度:" && \
24
- wc -c /run/secrets/GH_TOKEN && \
25
- echo "开始设置变量..." && \
26
  GH_USER=$(cat /run/secrets/GH_USER) && \
27
  GH_TOKEN=$(cat /run/secrets/GH_TOKEN) && \
28
  echo "User: $GH_USER" && \
29
- echo "Token已读取,长度正确" && \
30
- echo "尝试克隆..." && \
31
  git clone https://$GH_USER:$GH_TOKEN@github.com/leoncool23/tcm_expert_builder.git && \
32
- echo "克隆成功!" && \
33
- ls -la tcm_expert_builder/ && \
34
- echo "=== 调试信息结束 ==="
35
 
 
36
  WORKDIR /src/tcm_expert_builder
37
 
38
- # 简单启动以测试基本功能
39
- RUN pip install flask gunicorn
40
- EXPOSE 7860
 
 
 
 
 
 
 
 
 
 
 
41
 
42
- # 创建一个简单的测试应用
43
- RUN echo 'from flask import Flask\napp = Flask(__name__)\n@app.route("/")\ndef hello():\n return "Hello from TCM Expert Builder!"\nif __name__ == "__main__":\n app.run(host="0.0.0.0", port=7860)' > test_app.py
 
 
 
 
 
 
 
 
44
 
45
- CMD ["python", "test_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 \
 
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挂载方式,但修复bash语法问题
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"]