- Optimized Backoffice Dockerfile: node:22-alpine -> gcr.io/distroless/nodejs22-debian12 - Optimized BFF Dockerfile: python:3.12-slim -> gcr.io/distroless/python3-debian12 - Updated Backoffice Auth to use JWT_SECRET for local verification - Updated .env.example with correct env vars
38 lines
1 KiB
Docker
38 lines
1 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
# ===== STAGE 1: Builder =====
|
|
FROM python:3.11-slim AS builder
|
|
|
|
WORKDIR /build
|
|
|
|
# Instala dependências em virtualenv isolado
|
|
RUN python -m venv /opt/venv
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
|
|
COPY requirements.txt .
|
|
|
|
# Cache de pip para builds mais rápidas
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
pip install --upgrade pip && \
|
|
pip install -r requirements.txt
|
|
|
|
# ===== STAGE 2: Production (Distroless) =====
|
|
FROM gcr.io/distroless/python3-debian12:nonroot
|
|
|
|
# Variáveis de ambiente Python otimizadas
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PYTHONPATH="/opt/venv/lib/python3.11/site-packages"
|
|
|
|
WORKDIR /app
|
|
|
|
# Copia virtualenv do builder (apenas site-packages pois distroless já tem python)
|
|
COPY --from=builder /opt/venv/lib/python3.11/site-packages /opt/venv/lib/python3.11/site-packages
|
|
|
|
# Copia código fonte
|
|
COPY src ./src
|
|
|
|
EXPOSE 8000
|
|
|
|
# Uvicorn com workers otimizados
|
|
CMD ["/opt/venv/lib/python3.11/site-packages/bin/uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1"]
|