-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdockerfile
More file actions
37 lines (30 loc) · 1.56 KB
/
dockerfile
File metadata and controls
37 lines (30 loc) · 1.56 KB
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
# Dockerfile per il servizio di previsione Churn
# Fase 1: Base Image
# Partiamo da un'immagine Python ufficiale "slim" per ridurre le dimensioni.
# Specificare una versione precisa (es. 3.11) garantisce build riproducibili.
FROM python:3.11-slim
# Fase 2: Impostazione dell'Ambiente
# Creiamo e definiamo la cartella di lavoro all'interno del container.
WORKDIR /app
# Fase 3: Installazione delle Dipendenze
# Copiamo prima il file dei requisiti. Questo passaggio viene messo in cache da Docker.
# Se `requirements.txt` non cambia, Docker riutilizzerà lo strato esistente,
# velocizzando notevolmente le build successive.
COPY requirements-docker.txt .
# Eseguiamo l'installazione delle librerie.
# L'opzione --no-cache-dir riduce le dimensioni finali dell'immagine.
RUN pip install --no-cache-dir -r requirements-docker.txt
# Fase 4: Copia dell'Applicazione
# Solo dopo aver installato le dipendenze, copiamo il resto del codice.
COPY . .
# Fase 5: Esposizione della Porta
# Documentiamo che il container ascolterà sulla porta 5000.
# Questo non pubblica la porta, ma è una convenzione utile.
EXPOSE 5000
# Fase 6: Comando di Avvio
# Questo è il comando che viene eseguito all'avvio del container.
# Usiamo Gunicorn come server di produzione WSGI, una scelta robusta per Flask.
# --workers 3: avvia 3 processi paralleli per gestire le richieste.
# --bind 0.0.0.0:5000: rende il servizio accessibile da fuori il container sulla porta 5000.
# app:app: dice a Gunicorn di trovare l'oggetto 'app' nel file 'app.py'.
CMD ["gunicorn", "--workers", "3", "--bind", "0.0.0.0:5000", "app:app"]