para.AI_ASSUNTOS_CNJ / Dockerfile
Carlexxx
para.AI beta
8a646ad
FROM python:3.10-slim
# Instala dependências do sistema, incluindo gosu (para troca de usuário)
RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
gnupg \
ca-certificates \
curl \
gosu \
&& rm -rf /var/lib/apt/lists/*
# Adiciona a chave GPG da Elastic (método moderno)
RUN wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
# Adiciona o repositório da Elastic
RUN echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list
# Instala o Elasticsearch (já cria usuário/grupo elasticsearch)
RUN apt-get update && apt-get install -y --no-install-recommends elasticsearch \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# FIX: Reescreve o elasticsearch.yml completamente para garantir single-node.
# O sed com || append não é confiável quando o pacote .deb gera configs adicionais.
# Sobrescrever o arquivo inteiro é a abordagem mais segura e elimina ambiguidade.
RUN printf '%s\n' \
'cluster.name: elasticsearch' \
'node.name: ${HOSTNAME}' \
'path.data: /var/lib/elasticsearch' \
'path.logs: /var/log/elasticsearch' \
'discovery.type: single-node' \
'xpack.security.enabled: false' \
'xpack.security.http.ssl.enabled: false' \
'xpack.security.transport.ssl.enabled: false' \
'network.host: 0.0.0.0' \
> /etc/elasticsearch/elasticsearch.yml
# Ajusta permissões dos diretórios do Elasticsearch
RUN chown -R elasticsearch:elasticsearch /usr/share/elasticsearch /etc/elasticsearch /var/lib/elasticsearch /var/log/elasticsearch
# Define variáveis de ambiente para memória
ENV ES_JAVA_OPTS="-Xms512m -Xmx512m"
# Cria diretório de trabalho para a aplicação
WORKDIR /app
# Copia os arquivos de dependências Python e instala
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copia os arquivos da aplicação
COPY . ./
# Copia o script de entrada e torna executável
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Expõe as portas do Elasticsearch e da API
EXPOSE 9200 7860
# Define o comando padrão
CMD ["/entrypoint.sh"]