From: Giorgio Ravera Date: Sat, 3 Jan 2026 22:00:19 +0000 (+0100) Subject: multi‑stage dockerfile X-Git-Tag: v0.0.1~51 X-Git-Url: http://git.giorgioravera.it/?a=commitdiff_plain;h=b49375c7dae001c8b05fe98a55860ae0d1f3c5c2;p=network-manager.git multi‑stage dockerfile --- 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"]