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"]
|