File size: 2,275 Bytes
bacb18e
af86e9a
edec45d
 
 
 
 
 
 
 
af86e9a
edec45d
 
af86e9a
edec45d
 
af86e9a
edec45d
 
 
af86e9a
 
edec45d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2293b35
edec45d
af86e9a
 
 
edec45d
b720cbd
af86e9a
edec45d
 
 
af86e9a
edec45d
 
af86e9a
edec45d
 
af86e9a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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"]