# Dockerfile compartilhado para todos os microserviços Python
# Uso: docker build -f Dockerfile.python --build-arg SERVICE=contabil .
# Ou via docker-compose com a variável SERVICE_NAME

FROM python:3.11-slim

WORKDIR /app

# Dependências de sistema necessárias para psycopg2, signxml e playwright
RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc \
    libpq-dev \
    libxml2-dev \
    libxslt-dev \
    && rm -rf /var/lib/apt/lists/*

# Instalar dependências Python
COPY pyproject.toml ./
RUN pip install --no-cache-dir ".[all]" 2>/dev/null || pip install --no-cache-dir \
    fastapi>=0.128.0 \
    uvicorn>=0.40.0 \
    psycopg2-binary>=2.9.11 \
    pandas>=2.3.3 \
    numpy>=2.4.1 \
    pydantic>=2.12.5 \
    python-dotenv \
    requests \
    httpx

# Copiar código dos serviços
COPY server/python/ ./server/python/
COPY shared/ ./shared/

# SERVICE_NAME deve ser: contabil | bi | automation | fisco | people
ENV SERVICE_NAME=contabil
ENV SERVICE_PORT=8000

# Script de entrada que seleciona o serviço correto
COPY docker/python-entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

EXPOSE ${SERVICE_PORT}

HEALTHCHECK --interval=30s --timeout=10s --start-period=20s --retries=3 \
  CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${SERVICE_PORT}/health')" || exit 1

ENTRYPOINT ["/entrypoint.sh"]
