wkplhc commited on
Commit
44d9312
·
verified ·
1 Parent(s): a31127d

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +27 -22
Dockerfile CHANGED
@@ -1,12 +1,13 @@
1
- # 基础镜像
2
  FROM python:3.11-slim
3
 
4
- # 设置环境变量
5
  ENV DEBIAN_FRONTEND=noninteractive \
6
- PYTHONUNBUFFERED=1
 
 
7
 
8
- # 1. 安装系统依赖
9
- # 增加了 libgl1/libglib2.0 (OpenCV常用), build-essential (编译常用)
10
  RUN apt-get update && apt-get install -y \
11
  curl \
12
  git \
@@ -21,42 +22,46 @@ RUN apt-get update && apt-get install -y \
21
  RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
22
  apt-get install -y nodejs
23
 
 
 
 
24
  # 设置工作目录
25
  WORKDIR /app
26
 
27
- # 3. 复制项目文件
28
  COPY . .
29
 
30
- # 4. 后端依赖安装 (关键修改:使用 pip 替代 uv)
31
- # 如果根目录有 requirements.txt,直接安装
32
- # 这里的 --no-cache-dir 可以减少镜像体积
33
- RUN pip install --no-cache-dir --upgrade pip && \
34
- if [ -f requirements.txt ]; then pip install --no-cache-dir -r requirements.txt; fi
35
-
36
- # 额外补充:有时 backend 目录下也有 requirements,尝试安装一下防止遗漏
37
- RUN if [ -f backend/requirements.txt ]; then pip install --no-cache-dir -r backend/requirements.txt; fi
38
 
39
- # 5. 前端依赖安装
40
  WORKDIR /app/frontend
41
- # 增加 --verbose 以便出错时能在日志看到具体原因
42
- RUN npm install --legacy-peer-deps --verbose
43
 
44
- # 6. 配置 Nginx
45
  RUN rm -f /etc/nginx/sites-enabled/default
46
  COPY nginx.conf /etc/nginx/conf.d/default.conf
47
 
48
- # 7. 准备启动脚本
49
  WORKDIR /app
50
  COPY start.sh .
51
  RUN chmod +x start.sh
52
 
53
- # 8. 权限放行 (解决 Permission denied)
54
  RUN chmod -R 777 /app && \
55
  chmod -R 777 /var/log/nginx && \
56
  chmod -R 777 /var/lib/nginx && \
57
- touch /var/run/nginx.pid && \
58
- chmod 777 /var/run/nginx.pid
59
 
 
60
  EXPOSE 7860
61
 
 
62
  CMD ["./start.sh"]
 
1
+ # 使用 Python 3.11 Slim
2
  FROM python:3.11-slim
3
 
4
+ # 环境变量设置
5
  ENV DEBIAN_FRONTEND=noninteractive \
6
+ PYTHONUNBUFFERED=1 \
7
+ # 确保 pip 和 uv 安装到系统目录
8
+ UV_SYSTEM_PYTHON=1
9
 
10
+ # 1. 安装必要的系统工具
 
11
  RUN apt-get update && apt-get install -y \
12
  curl \
13
  git \
 
22
  RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
23
  apt-get install -y nodejs
24
 
25
+ # 3. 安装 uv (项目依赖管理工具)
26
+ RUN pip install --no-cache-dir uv
27
+
28
  # 设置工作目录
29
  WORKDIR /app
30
 
31
+ # 4. 复制所有文件
32
  COPY . .
33
 
34
+ # 5. 后端依赖安装 (关键修复步骤)
35
+ WORKDIR /app/backend
36
+ # 删除可能存在的 Mac 版锁文件,强制在 Linux 下重新解析
37
+ RUN rm -f uv.lock
38
+ # 使用 uv 安装依赖到系统环境 (比 pip install . 更稳定)
39
+ # 如果 backend 目录下有 pyproject.toml,它会自动读取
40
+ RUN uv pip install --system . || pip install .
 
41
 
42
+ # 6. 前端依赖安装
43
  WORKDIR /app/frontend
44
+ # 安装前端依赖
45
+ RUN npm install --legacy-peer-deps
46
 
47
+ # 7. Nginx 配置
48
  RUN rm -f /etc/nginx/sites-enabled/default
49
  COPY nginx.conf /etc/nginx/conf.d/default.conf
50
 
51
+ # 8. 启动脚本权限和准备
52
  WORKDIR /app
53
  COPY start.sh .
54
  RUN chmod +x start.sh
55
 
56
+ # 9. 权限放行 (修复 HuggingFace 权限问题)
57
  RUN chmod -R 777 /app && \
58
  chmod -R 777 /var/log/nginx && \
59
  chmod -R 777 /var/lib/nginx && \
60
+ mkdir -p /var/run/nginx && \
61
+ chmod -R 777 /var/run/nginx
62
 
63
+ # 暴露端口
64
  EXPOSE 7860
65
 
66
+ # 启动
67
  CMD ["./start.sh"]