55 lines
1.6 KiB
Docker
55 lines
1.6 KiB
Docker
|
|
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"]
|
||
|
|
|