From b49375c7dae001c8b05fe98a55860ae0d1f3c5c2 Mon Sep 17 00:00:00 2001 From: Giorgio Ravera Date: Sat, 3 Jan 2026 23:00:19 +0100 Subject: [PATCH] =?utf8?q?multi=E2=80=91stage=20dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Dockerfile | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 83a4e1b..63aadd3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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"] -- 2.47.3