Spaces:
Paused
Paused
correction dockerfile
Browse files- Dockerfile +25 -23
Dockerfile
CHANGED
@@ -1,43 +1,45 @@
|
|
1 |
-
#
|
2 |
FROM python:3.12-slim
|
3 |
|
4 |
-
#
|
5 |
RUN apt-get update && apt-get install -y \
|
6 |
build-essential \
|
7 |
git \
|
8 |
cmake \
|
|
|
9 |
libopenblas-dev \
|
10 |
libsqlite3-dev \
|
11 |
-
curl \
|
12 |
&& rm -rf /var/lib/apt/lists/*
|
13 |
|
14 |
-
#
|
15 |
WORKDIR /code
|
16 |
|
17 |
-
#
|
18 |
-
COPY requirements.txt .
|
19 |
-
|
20 |
-
# Install rapide de tout sauf llama-cpp-python (optionnel si inclus dans wheels)
|
21 |
-
RUN pip install --no-cache-dir --upgrade pip
|
22 |
-
RUN pip install --no-cache-dir --prefer-binary -r requirements.txt
|
23 |
-
|
24 |
-
# Copier les wheels (que tu as déjà créées en local)
|
25 |
COPY wheels/ ./wheels/
|
26 |
|
27 |
-
#
|
28 |
-
RUN pip install --no-cache-dir \
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
#
|
37 |
COPY . .
|
38 |
|
39 |
-
#
|
40 |
EXPOSE 7860
|
41 |
|
42 |
-
#
|
43 |
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]
|
|
|
1 |
+
# ⚙️ Étape 1 : base Python 3.12 slim
|
2 |
FROM python:3.12-slim
|
3 |
|
4 |
+
# 📦 Étape 2 : installer les dépendances système minimales
|
5 |
RUN apt-get update && apt-get install -y \
|
6 |
build-essential \
|
7 |
git \
|
8 |
cmake \
|
9 |
+
curl \
|
10 |
libopenblas-dev \
|
11 |
libsqlite3-dev \
|
|
|
12 |
&& rm -rf /var/lib/apt/lists/*
|
13 |
|
14 |
+
# 📁 Étape 3 : définir le répertoire de travail
|
15 |
WORKDIR /code
|
16 |
|
17 |
+
# 📥 Étape 4 : copier les wheels précompilés (AVANT le pip install)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
COPY wheels/ ./wheels/
|
19 |
|
20 |
+
# ⚡ Étape 5 : installer les wheels manuellement AVANT tout (évite les builds !)
|
21 |
+
RUN pip install --no-cache-dir --upgrade pip setuptools wheel \
|
22 |
+
&& pip install --no-cache-dir --find-links=./wheels \
|
23 |
+
llama-cpp-python==0.3.14 \
|
24 |
+
numpy==1.26.4 \
|
25 |
+
typing-extensions==4.14.1 \
|
26 |
+
diskcache==5.6.3 \
|
27 |
+
jinja2==3.1.6 \
|
28 |
+
MarkupSafe==3.0.2
|
29 |
+
|
30 |
+
# 📄 Étape 6 : copier le requirements.txt (hors wheels)
|
31 |
+
COPY requirements.txt .
|
32 |
+
|
33 |
+
# 🔧 Étape 7 : installer les dépendances restantes via wheels locaux (si dispo)
|
34 |
+
RUN pip install --no-cache-dir --prefer-binary \
|
35 |
+
--find-links=./wheels \
|
36 |
+
-r requirements.txt
|
37 |
|
38 |
+
# 📦 Étape 8 : copier le code de l'app
|
39 |
COPY . .
|
40 |
|
41 |
+
# 🌐 Étape 9 : exposer le port utilisé par Streamlit
|
42 |
EXPOSE 7860
|
43 |
|
44 |
+
# 🚀 Étape 10 : lancer l'application Streamlit
|
45 |
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]
|