72 lines
2.1 KiB
Docker
72 lines
2.1 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 \
|
|
# 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"]
|
|
|