# Estágio 1: Build
FROM python:3.13.11-slim AS builder

ARG UV_INDEX_TIMBRASIL_PASSWORD
ARG UV_INDEX_TIMBRASIL_USERNAME

# Dependências de compilação para pacotes com extensão nativa (ex.: annoy via nemoguardrails)
RUN apt-get update && apt-get install -y --no-install-recommends build-essential \
    && rm -rf /var/lib/apt/lists/*

# Instala o uv para gerenciar dependências de forma rápida e eficiente
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv

WORKDIR /app

# Copia apenas os arquivos de dependências para aproveitar o cache do Docker
COPY pyproject.toml uv.lock README.md ./
COPY agent_framework_oci/libs/agent_framework ./agent_framework_oci/libs/agent_framework

# Sincroniza as dependências (sem instalar as de desenvolvimento e sem instalar o projeto local agora)
# Analisar como ter lock independente da maquina do desenvolvedor
RUN uv lock && uv sync --no-dev --no-install-project

# Estágio 2: Runtime
FROM python:3.13.11-slim
COPY tim-custom-ca.crt /usr/local/share/ca-certificates/tim-custom-ca.crt
# Instala curl para o healthcheck e cria usuário não-root
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates \
    && rm -rf /var/lib/apt/lists/* \
    && groupadd -g 1000 appuser \ 
    && update-ca-certificates \
    && useradd -u 1000 -g 1000 -m appuser

ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

WORKDIR /app

# Copia o ambiente virtual criado pelo uv
COPY --from=builder /app/.venv /app/.venv

# Garante que o python use o venv por padrão
ENV PATH="/app/.venv/bin:$PATH"

# Copia o código da aplicação
# Mudamos a ordem para copiar apenas o necessário e definir permissões
COPY . .
RUN chown -R appuser:appuser /app

# Diretório padrão para configs OCI (montado via volume em runtime)
RUN mkdir -p /config && chown appuser:appuser /config

# Expõe a porta que o FastAPI utilizará
EXPOSE 8000

# Variáveis de ambiente padrão
ENV TIM_APP_HOST=0.0.0.0
ENV TIM_APP_PORT=8000
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1

# Troca para o usuário não-root
USER appuser

# Comando para iniciar a aplicação
CMD ["python", "-m", "agente_contas_tim.main"]
