2026-03-09 18:46:01 +00:00
|
|
|
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++ \
|
feat(sgmp): API REST, app Next.js, ConfiguracaoSGMP e ajustes de permissões/serviços
- API JSON (auth, dashboard, colaboradores, solicitações) e app Next em frontend/
- Modelo ConfiguracaoSGMP, migrações e permissões (acesso, decorators, context)
- Serviços/views/templates e integrações Winthor/SQL Server
- Docs: MIGRACAO, ARQUITETURA_APROVACAO, README_PERMISSOES; Dockerfile/requirements
- Testes: fluxo de desligamento alinhado a pareceres GG/Ctrl + Diretoria; criar_solicitacao_desligamento com tipo/aviso
Made-with: Cursor
2026-04-15 01:44:49 +00:00
|
|
|
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 && \
|
2026-03-09 18:46:01 +00:00
|
|
|
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"]
|
|
|
|
|
|