Spaces:
13ze
/
Runtime error

File size: 3,470 Bytes
204d6b0
e4fbb50
 
204d6b0
e4fbb50
 
204d6b0
0abcf01
e4fbb50
204d6b0
 
f0cbeae
e4fbb50
204d6b0
b4dd3ad
 
 
 
204d6b0
b4dd3ad
 
 
 
f0cbeae
b4dd3ad
0069402
1b6ef52
2d97948
3f73fdd
2d97948
 
b4dd3ad
204d6b0
e4fbb50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ad5bc33
0069402
204d6b0
 
e4fbb50
2d97948
3f73fdd
7a4fde2
 
 
aa0785d
 
72eeb27
aa0785d
72eeb27
e4fbb50
 
 
c52ae5c
 
b4dd3ad
e4fbb50
204d6b0
b4dd3ad
 
 
 
59802b0
 
 
 
 
e4fbb50
204d6b0
e4fbb50
 
204d6b0
e4fbb50
2d97948
e4fbb50
 
1b6ef52
 
e4fbb50
204d6b0
e4fbb50
 
204d6b0
e4fbb50
 
204d6b0
e4fbb50
 
204d6b0
2d97948
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Usa uma imagem base com Python e Node.js
FROM nikolaik/python-nodejs:python3.12-nodejs20

# Adiciona informações do mantenedor
LABEL maintainer="ai来事 <https://www.youtube.com/@all.ai.>"

# Argumento para forçar atualização de cache
ARG CACHEBUST=222

# Define argumentos de build com valores padrão
ARG WEBHOOK_URL=https://13ze-ain8n.hf.space/
ARG POSTGRESDB_PORT=5432

# Define variáveis de ambiente
ENV WEBHOOK_URL=${WEBHOOK_URL} \
    N8N_HOST=0.0.0.0 \
    N8N_PORT=7860 \
    N8N_PROTOCOL=https \
    GENERIC_TIMEZONE=America/Sao_Paulo \
    N8N_METRICS=true \
    QUEUE_HEALTH_CHECK_ACTIVE=true \
    N8N_PAYLOAD_SIZE_MAX=256 \
    DB_TYPE=postgresdb \
    DB_POSTGRESDB_PORT=${POSTGRESDB_PORT} \
    VIRTUAL_ENV=/home/pn/venv \
    PATH="/home/pn/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" \
    QDRANT_HOST=http://localhost \
    QDRANT_PORT=6333 \
    QDRANT_VERSION=1.12.4 \
    WAIT_TIMEOUT=30 \
    N8N_LOG_LEVEL=info

# Instala dependências do sistema
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    unzip \
    gnupg \
    build-essential \
    sudo \
    vim \
    git \
    procps \
    lsof \
    net-tools \
    ca-certificates \
    openssl \
    tzdata \
    htop \
    jq \
    netcat-openbsd \
    redis-server \
    # Define o fuso horário para São Paulo
    && ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime \
    && dpkg-reconfigure --frontend noninteractive tzdata \
    && cd /tmp \
    && curl -L https://github.com/qdrant/qdrant/releases/download/v${QDRANT_VERSION}/qdrant-x86_64-unknown-linux-gnu.tar.gz -o qdrant.tar.gz \
    && tar xvf qdrant.tar.gz \
    && mv qdrant /usr/local/bin/ \
    && rm qdrant.tar.gz \
    && mkdir -p /home/pn/.n8n/qdrant/storage \
    && mkdir -p /home/pn/.n8n/qdrant/config \
    && mkdir -p /home/pn/.n8n/qdrant/snapshots \
    && chown -R pn:pn /home/pn/.n8n/qdrant \
    && chmod -R 755 /home/pn/.n8n/qdrant \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && python3 -m venv $VIRTUAL_ENV \
    && $VIRTUAL_ENV/bin/pip install --no-cache-dir --upgrade pip requests yt-dlp \
    && npm install -g n8n@latest pnpm \
    && npm cache clean --force

# Cria arquivo de variáveis de ambiente usando segredos
RUN --mount=type=secret,id=POSTGRES_USER,mode=0444,required=true \
    --mount=type=secret,id=POSTGRES_PASSWORD,mode=0444,required=true \
    --mount=type=secret,id=POSTGRES_DB,mode=0444,required=true \
    --mount=type=secret,id=POSTGRESDB_HOST,mode=0444,required=true \
    echo "export DB_POSTGRESDB_HOST=$(cat /run/secrets/POSTGRESDB_HOST)" >> /home/pn/.env && \
    echo "export DB_POSTGRESDB_USER=$(cat /run/secrets/POSTGRES_USER)" >> /home/pn/.env && \
    echo "export DB_POSTGRESDB_PASSWORD=$(cat /run/secrets/POSTGRES_PASSWORD)" >> /home/pn/.env && \
    echo "export DB_POSTGRESDB_DATABASE=$(cat /run/secrets/POSTGRES_DB)" >> /home/pn/.env && \
    chown pn:pn /home/pn/.env

# Define diretório de trabalho
WORKDIR /home/pn/n8n

# Copia scripts e configurações
COPY --chown=pn:pn run.sh ./run.sh
COPY --chown=pn:pn config/n8n_env.sh ./config/n8n_env.sh
RUN chmod +x ./run.sh \
    && mkdir -p /home/pn/.n8n \
    && chown -R pn:pn /home/pn/.n8n \
    && chown -R pn:pn /home/pn/n8n

# Expõe a porta usada pelo n8n
EXPOSE 7860

# Usa usuário não-root
USER pn

# Define o volume de dados
VOLUME ["/home/pn/.n8n"]

# Comando de inicialização do container
CMD ["./run.sh"]