From 1030fa994c168eaea6e09ae388368d886d880e93 Mon Sep 17 00:00:00 2001 From: garbelo Date: Sun, 15 Feb 2026 15:08:25 +0000 Subject: [PATCH] =?UTF-8?q?Reducci=C3=B3n=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Dockerfile | 47 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 88c0b4e..8cba572 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,31 +1,58 @@ -# backend/Dockerfile -FROM python:3.11-slim +# --------------------------- +# 1️⃣ Builder stage +# --------------------------- +FROM python:3.11-slim AS builder -# Evitar .pyc y buffering ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 WORKDIR /app -# Dependencias del sistema mínimas +# Solo herramientas necesarias para compilar dependencias RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ && rm -rf /var/lib/apt/lists/* -# Copiamos pyproject y lock si lo hubiera +# Copiamos solo archivos de dependencias (mejor cache) COPY pyproject.toml ./ -# Instalamos dependencias +# Generamos wheels RUN pip install --upgrade pip && \ - pip install . + pip wheel --no-cache-dir --no-deps --wheel-dir /wheels . -# Copiamos el resto del código (respetando .dockerignore) + +# --------------------------- +# 2️⃣ Runtime stage +# --------------------------- +FROM python:3.11-slim + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 + +WORKDIR /app + +# Crear usuario no-root +RUN useradd --create-home appuser + +# Copiar wheels desde builder +COPY --from=builder /wheels /wheels + +# Instalar dependencias sin compilers +RUN pip install --upgrade pip && \ + pip install --no-cache-dir /wheels/* && \ + rm -rf /wheels + +# Copiar código fuente COPY . . -# Variables de autenticación básica +# Cambiar permisos +RUN chown -R appuser:appuser /app + +USER appuser + ENV BASIC_AUTH_USERNAME=admin ENV BASIC_AUTH_PASSWORD=admin EXPOSE 8000 -CMD ["python", "-m", "uvicorn", "beyond_api.main:app", "--host", "0.0.0.0", "--port", "8000"] +CMD ["uvicorn", "beyond_api.main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file