FROM python:3.9-slim-bookworm

WORKDIR /app

# 1. Dependências de sistema (Oracle exige libaio1)
# Adicionei 'libaio1' explicitamente pois é runtime dependency
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        libaio1 \
        libaio-dev \
        curl \
        unzip \
        gcc \
        g++ \
        unixodbc-dev \
        # WeasyPrint dependencies (Cairo/Pango/GDK-pixbuf + basic image/font libs)
        libcairo2 \
        libpango-1.0-0 \
        libpangoft2-1.0-0 \
        libharfbuzz0b \
        libglib2.0-0 \
        libglib2.0-data \
        libicu72 \
        libgdk-pixbuf-2.0-0 \
        libxml2 \
        libxslt1.1 \
        zlib1g \
        libjpeg62-turbo \
        libfontconfig1 \
        shared-mime-info \
        xdg-user-dirs \
        fonts-dejavu && \
    rm -rf /var/lib/apt/lists/*

# 2. Oracle Instant Client
# Usando versão 21.13 (Link atualizado e funcional)
RUN mkdir -p /opt/oracle && \
    cd /opt/oracle && \
    curl -f -L -o instantclient.zip \
      https://download.oracle.com/otn_software/linux/instantclient/2113000/instantclient-basic-linux.x64-21.13.0.0.0dbru.zip && \
    unzip instantclient.zip && \
    rm instantclient.zip && \
    # O zip extrai para a pasta instantclient_21_13, ajustamos a config:
    echo "/opt/oracle/instantclient_21_13" > /etc/ld.so.conf.d/oracle-instantclient.conf && \
    ldconfig

# 3. Variáveis de Ambiente
ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_21_13:$LD_LIBRARY_PATH
ENV ORACLE_LIB_DIR=/opt/oracle/instantclient_21_13

# 4. Instalação de pacotes Python
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt && \
    pip install --no-cache-dir gunicorn

# 5. Copia o código
COPY . .

# 6. Tornar o entrypoint executável
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

EXPOSE 8000

# Entrypoint que executa migrações e collectstatic antes de iniciar
ENTRYPOINT ["/entrypoint.sh"]

# Comando padrão
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3", "--timeout", "120"]

