File size: 1,512 Bytes
8bea8c3
 
6f01060
8bea8c3
6f01060
 
b2a7451
6f01060
cdd3156
6f01060
 
8bea8c3
 
22e7a08
6f01060
 
ea3dfaa
 
22e7a08
ea3dfaa
b2a7451
ea3dfaa
 
 
 
6f01060
ea3dfaa
8a9ecbe
cdd3156
ea3dfaa
8bea8c3
8a9ecbe
 
ea3dfaa
8a9ecbe
 
ea3dfaa
8a9ecbe
f63174b
ea3dfaa
b2a7451
f63174b
ea3dfaa
 
 
 
6f01060
 
ea3dfaa
6f01060
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# ⚙️ Étape 1 : Image de base stable avec GLIBC + wheels compatibles
FROM python:3.10-slim

# 📦 Étape 2 : dépendances système minimales
RUN apt-get update && apt-get install -y \
    build-essential \
    git \
    cmake \
    curl \
    libopenblas-dev \
    libsqlite3-dev \
    libgl1 \
    libglib2.0-0 \
    libomp-dev \
    && rm -rf /var/lib/apt/lists/*

# 👤 Étape 3 : Créer un utilisateur non-root "appuser"
RUN useradd -ms /bin/bash appuser

# 📁 Étape 4 : Créer le dossier de travail avec droits pour appuser
WORKDIR /code
RUN mkdir -p /code/.streamlit && chown -R appuser:appuser /code

# ⚠️ Étape 5 : définir le HOME pour Streamlit
ENV HOME="/code"

# 📥 Étape 6 : copier les wheels (llama-cpp-python précompilée)
COPY wheels/ ./wheels/

# ⚡ Étape 7 : installer pip et la wheel locale
RUN pip install --no-cache-dir --upgrade pip setuptools wheel \
 && pip install --no-cache-dir ./wheels/llama_cpp_python-0.3.14-*.whl

# 📄 Étape 8 : copier requirements.txt (sans llama-cpp-python dedans)
COPY requirements.txt .

# 📦 Étape 9 : installer le reste des dépendances
RUN pip install --no-cache-dir --prefer-binary -r requirements.txt

# 📁 Étape 10 : copier tout le code de l'application
COPY . .

# 👤 Étape 11 : basculer en utilisateur non-root pour exécution
USER appuser

# 🌐 Étape 12 : exposer le port Streamlit
EXPOSE 7860

# 🚀 Étape 13 : lancer Streamlit
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]