Initial commit: mini-erp (backend FastAPI + frontend React/Vite)
Base para el flujo de ramas por cliente. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
commit
ab3c613165
154 files changed
+16872
No files matched your search
@@ -0,0 +1,48 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
# Zona horaria del contenedor. Por defecto Perú (America/Lima), a juego con
|
||||
# los datos de SAP que usa esta app (Country "PE", SUNAT, soles); cambiar el
|
||||
# build arg si se despliega para un cliente en otro país de Latinoamérica.
|
||||
ARG TZ=America/Lima
|
||||
ENV TZ=${TZ}
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends tzdata \
|
||||
&& ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \
|
||||
&& echo ${TZ} > /etc/timezone \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Librerías nativas que necesita WeasyPrint (routers/reports.py) para
|
||||
# renderizar HTML/CSS a PDF: no vienen incluidas en python:3.12-slim.
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
libpango-1.0-0 \
|
||||
libpangocairo-1.0-0 \
|
||||
libpangoft2-1.0-0 \
|
||||
libcairo2 \
|
||||
libgdk-pixbuf-2.0-0 \
|
||||
shared-mime-info \
|
||||
fonts-liberation \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Certificado extra de la empresa (VPN, proxy o antivirus corporativo que
|
||||
# intercepta HTTPS, ej. Zscaler/Netskope). Si mini-backend/certs/ tiene un
|
||||
# archivo .pem/.crt, pip confía en él para poder salir a internet durante el
|
||||
# build. Si la carpeta está vacía (caso normal), este paso no hace nada.
|
||||
COPY certs/ /usr/local/share/extra-ca/
|
||||
COPY requirements.txt .
|
||||
RUN CERT_FILE=$(find /usr/local/share/extra-ca -maxdepth 1 -type f \( -name "*.pem" -o -name "*.crt" -o -name "*.cer" \) 2>/dev/null | head -n1); \
|
||||
if [ -n "$CERT_FILE" ]; then export PIP_CERT="$CERT_FILE"; fi; \
|
||||
pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
# Un solo worker (por diseño, no un límite temporal): la sesión de SAP y las
|
||||
# sesiones de empleado viven en diccionarios en memoria del proceso
|
||||
# (core/sap.py, core/session.py). Con --workers > 1 cada proceso tendría su
|
||||
# propia copia y los usuarios verían "sesión expirada" de forma intermitente
|
||||
# según a qué worker los enrutara Docker/el proxy.
|
||||
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
Reference in new issue
Block a user