]> git.giorgioravera.it Git - network-manager.git/commitdiff
multi‑stage dockerfile
authorGiorgio Ravera <giorgio.ravera@gmail.com>
Sat, 3 Jan 2026 22:00:19 +0000 (23:00 +0100)
committerGiorgio Ravera <giorgio.ravera@gmail.com>
Sat, 3 Jan 2026 22:00:19 +0000 (23:00 +0100)
Dockerfile

index 83a4e1bc3f34ea9b29f351f3bcf3b15d29828cb7..63aadd3d687b17b1f55e8480257ce3cd88a46313 100644 (file)
@@ -1,14 +1,24 @@
-# Dockerfile
-FROM python:3.12-slim
+# ---------- STAGE 1: BUILD ----------
+FROM python:3.12-slim AS builder
 
-WORKDIR /var/www/network-manager
+WORKDIR /app
 
-# Install system dependencies 
-RUN apt-get update && apt-get install -y sqlite3 && rm -rf /var/lib/apt/lists/*
+# Install build dependencies
+RUN apt-get update && \
+    apt-get install -y --no-install-recommends sqlite3 && \
+    apt-get clean && \
+    rm -rf /var/lib/apt/lists/*
 
-# Install python dependencies
 COPY requirements.txt .
-RUN pip install -r requirements.txt
+RUN pip install --prefix=/install -r requirements.txt
+
+# ---------- STAGE 2: RUNTIME ----------
+FROM python:3.12-slim
+
+WORKDIR /var/www/network-manager
+
+# Copy only installed packages
+COPY --from=builder /install /usr/local
 
 # Copy backend and frontend
 COPY backend/ /var/www/network-manager/backend/
@@ -22,6 +32,8 @@ RUN chmod +x /entrypoint.sh
 ENV DB_PATH=/data/database.db
 ENV DB_RESET=0
 ENV HTTP_PORT=8000
+ENV LOGIN_MAX_ATTEMPTS=5
+ENV LOGIN_WINDOW_SECONDS=600
 ENV DOMAIN=example.com
 ENV PUBLIC_IP=127.0.0.1
 
@@ -30,4 +42,4 @@ EXPOSE ${HTTP_PORT}
 
 # Use the env var in the startup command
 ENTRYPOINT ["/entrypoint.sh"]
-CMD ["sh", "-c", "uvicorn backend.main:app --host 0.0.0.0 --port ${HTTP_PORT}"]
+CMD ["sh", "-c", "uvicorn backend.main:app --host 0.0.0.0 --port ${HTTP_PORT} --proxy-headers"]