Marcin-XStudio commited on
Commit
31c16de
·
1 Parent(s): b8658f4
Files changed (1) hide show
  1. Dockerfile +26 -41
Dockerfile CHANGED
@@ -1,56 +1,41 @@
1
  FROM python:3.10-slim
2
 
3
- # 1) Configure all caches under the non-root home
4
- ENV HOME=/home/user \
5
- HF_HOME=/home/user/.cache/huggingface \
6
- HF_HUB_CACHE=/home/user/.cache/huggingface/hub \
7
- TRANSFORMERS_CACHE=/home/user/.cache/huggingface/transformers \
8
- DOCLING_ARTIFACTS_PATH=/home/user/.cache/docling/models \
9
- OMP_NUM_THREADS=2
10
 
11
- # 2) Install system-level dependencies
12
- RUN apt-get update && apt-get install -y \
13
- build-essential git libpoppler-cpp-dev poppler-utils \
14
- libmagic-dev python3-dev \
15
- && rm -rf /var/lib/apt/lists/*
16
-
17
- # 3) Create a non-root user
18
  RUN useradd -m -u 1000 user
19
 
20
- WORKDIR $HOME/app
 
 
 
21
 
22
- # 4) Copy & install Python runtime dependencies
23
- COPY requirements.txt ./
24
- RUN pip install --no-cache-dir \
25
- torch torchvision --extra-index-url https://download.pytorch.org/whl/cpu \
26
- huggingface_hub accelerate \
27
- && pip install --no-cache-dir -r requirements.txt
28
 
29
- # 5) Prepare cache directories and give ownership to `user`
30
- RUN mkdir -p \
31
- $HF_HUB_CACHE \
32
- $DOCLING_ARTIFACTS_PATH \
33
- $HOME/app/model_cache \
34
- && chown -R user:user \
35
- $HOME/.cache \
36
- $HOME/app/model_cache
37
 
38
- # 6) Switch to non-root and prefetch Doclings models
39
  USER user
40
- RUN pip install --no-cache-dir docling \
41
- && docling-tools models download
42
-
43
- # 7) Prefetch your NuExtract model into model_cache
44
- RUN python3 - <<EOF
45
  import os
46
  from huggingface_hub import snapshot_download
47
  snapshot_download(
48
- repo_id="numind/NuExtract-1.5-tiny",
49
- local_dir=os.path.join(os.getenv("HOME"), "app", "model_cache"),
50
- cache_dir=os.getenv("HF_HUB_CACHE")
51
  )
52
  EOF
53
 
54
- # 8) Copy your application code & start the server
55
- COPY --chown=user:user . .
56
- CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
  FROM python:3.10-slim
2
 
3
+ # 1) Variables HF avant tout
4
+ ENV HF_HOME="/home/user/.cache/huggingface" \
5
+ HF_HUB_CACHE="/home/user/.cache/huggingface/hub" \
6
+ TRANSFORMERS_CACHE="/home/user/.cache/huggingface/transformers"
 
 
 
7
 
8
+ # 2) Créer l’utilisateur non-root
 
 
 
 
 
 
9
  RUN useradd -m -u 1000 user
10
 
11
+ # 3) Installer dépendances système
12
+ RUN apt-get update && apt-get install -y \
13
+ build-essential git libpoppler-cpp-dev poppler-utils libmagic-dev python3-dev \
14
+ && rm -rf /var/lib/apt/lists/*
15
 
16
+ # 4) Copier requirements et installer libs Python
17
+ WORKDIR /home/user/app
18
+ COPY --chown=user requirements.txt .
19
+ RUN pip install --no-cache-dir torch torchvision --extra-index-url https://download.pytorch.org/whl/cpu
20
+ RUN pip install --no-cache-dir huggingface_hub
21
+ RUN pip install --no-cache-dir -r requirements.txt
22
 
23
+ # 5) Pré-créer model_cache et HF_HOME, puis chown
24
+ RUN mkdir -p /home/user/app/model_cache $HF_HUB_CACHE \
25
+ && chown -R user:user /home/user/app /home/user/.cache/huggingface
 
 
 
 
 
26
 
27
+ # 6) Télécharger le modèle au build-time sous lutilisateur non-root
28
  USER user
29
+ RUN python - <<EOF
 
 
 
 
30
  import os
31
  from huggingface_hub import snapshot_download
32
  snapshot_download(
33
+ repo_id="numind/NuExtract-1.5-tiny",
34
+ local_dir="/home/user/app/model_cache",
35
+ cache_dir=os.getenv("HF_HUB_CACHE")
36
  )
37
  EOF
38
 
39
+ # 7) Copier le reste du code et démarrer
40
+ COPY --chown=user . .
41
+ CMD ["uvicorn","app:app","--host","0.0.0.0","--port","7860"]