王昱 commited on
Commit
71aa3f1
·
1 Parent(s): 38c797f

Enhance Dockerfile for improved user permissions and caching: create non-root user, set environment variables for Hugging Face cache, optimize dependency installation process, and adjust file copying order to prevent unnecessary reinstallation of dependencies. Update .DS_Store binary file.

Browse files
Files changed (2) hide show
  1. .DS_Store +0 -0
  2. Dockerfile +26 -7
.DS_Store CHANGED
Binary files a/.DS_Store and b/.DS_Store differ
 
Dockerfile CHANGED
@@ -1,23 +1,42 @@
1
  FROM python:3.9-slim
2
 
 
 
 
 
 
3
  WORKDIR /code
4
 
5
- # 安装系统依赖
 
 
 
 
 
 
 
 
6
  RUN apt-get update && apt-get install -y \
7
  build-essential \
8
  curl \
9
  software-properties-common \
10
  git \
11
- && rm -rf /var/lib/apt/lists/*
 
 
 
 
 
12
 
13
- # 复制项目文件
14
- COPY . .
15
 
16
- # 安装依赖
17
- RUN pip3 install -r requirements.txt
 
18
 
19
  # 暴露端口
20
  EXPOSE 7860
21
 
22
  # 启动命令
23
- CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
  FROM python:3.9-slim
2
 
3
+ # 创建非 root 用户和必要的目录
4
+ RUN useradd -m -u 1000 user && \
5
+ mkdir -p /code /home/user/.cache && \
6
+ chown -R user:user /home/user/.cache
7
+
8
  WORKDIR /code
9
 
10
+ # 设置环境变量
11
+ ENV TRANSFORMERS_CACHE=/home/user/.cache/huggingface
12
+ ENV HF_HOME=/home/user/.cache/huggingface
13
+
14
+ # 首先只复制 requirements.txt
15
+ # 这样只有 requirements.txt 改变时才会重新安装依赖
16
+ COPY requirements.txt .
17
+
18
+ # 安装系统依赖和 Python 包依赖
19
  RUN apt-get update && apt-get install -y \
20
  build-essential \
21
  curl \
22
  software-properties-common \
23
  git \
24
+ && rm -rf /var/lib/apt/lists/* \
25
+ && pip3 install --no-cache-dir --upgrade pip \
26
+ && pip3 install --no-cache-dir -r requirements.txt
27
+
28
+ # 设置目录权限
29
+ RUN chown -R user:user /code
30
 
31
+ # 切换到非 root 用户
32
+ USER user
33
 
34
+ # 最后才复制代码文件
35
+ # 这样修改代码时不会触发依赖重新安装
36
+ COPY --chown=user:user . .
37
 
38
  # 暴露端口
39
  EXPOSE 7860
40
 
41
  # 启动命令
42
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]