wkplhc commited on
Commit
967ac02
·
verified ·
1 Parent(s): d9d8f54

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +26 -25
Dockerfile CHANGED
@@ -1,61 +1,62 @@
 
1
  FROM python:3.11-slim
2
 
3
- # 设置非交互式前端
4
- ENV DEBIAN_FRONTEND=noninteractive
 
5
 
6
- # 1. 安装基础系统工具和编译环境 (关键修复:增加了 build-essential 和 python3-dev)
 
7
  RUN apt-get update && apt-get install -y \
8
  curl \
9
  git \
10
  nginx \
11
  build-essential \
12
  python3-dev \
 
 
13
  && rm -rf /var/lib/apt/lists/*
14
 
15
- # 2. 安装 Node.js 20 (使用官方源,比 Debian 默认源更稳定)
16
  RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
17
  apt-get install -y nodejs
18
 
19
- # 3. 安装 uv
20
- RUN pip install uv
21
-
22
  # 设置工作目录
23
  WORKDIR /app
24
 
25
- # 4. 复制项目文件
26
  COPY . .
27
 
28
- # 5. 后端配置
29
- WORKDIR /app/backend
30
- # 创建虚拟环境并同步依赖
31
- # 使用 --compile 确保字节码编译,减少运行时开销
32
- RUN uv sync
33
 
34
- # uv 创建的虚拟环境加入 PATH这样后续可以直接用 'python' 而不需要 'uv run'
35
- ENV PATH="/app/backend/.venv/bin:$PATH"
36
 
37
- # 6. 前端配置
38
  WORKDIR /app/frontend
39
- # 关键修复:使用 --legacy-peer-deps 防止依赖冲突报
40
- RUN npm install --legacy-peer-deps
41
 
42
- # 7. 配置 Nginx
43
- # 确保删除旧配置
44
  RUN rm -f /etc/nginx/sites-enabled/default
45
  COPY nginx.conf /etc/nginx/conf.d/default.conf
46
 
47
- # 8. 准备启动脚本
48
  WORKDIR /app
49
  COPY start.sh .
50
  RUN chmod +x start.sh
51
 
52
- # 9. 权限设置 (确保 HuggingFace 用户可以读写)
53
  RUN chmod -R 777 /app && \
54
  chmod -R 777 /var/log/nginx && \
55
- chmod -R 777 /var/lib/nginx
 
 
56
 
57
- # 暴露端口
58
  EXPOSE 7860
59
 
60
- # 启动
61
  CMD ["./start.sh"]
 
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 \
13
  nginx \
14
  build-essential \
15
  python3-dev \
16
+ libgl1 \
17
+ libglib2.0-0 \
18
  && rm -rf /var/lib/apt/lists/*
19
 
20
+ # 2. 安装 Node.js 20
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"]