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 && \ 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"]