Projeto do Agent Contas ORACLE
This commit is contained in:
66
Dockerfile
Normal file
66
Dockerfile
Normal file
@@ -0,0 +1,66 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user