Update Dockerfile
Browse files- Dockerfile +17 -23
Dockerfile
CHANGED
@@ -1,21 +1,22 @@
|
|
1 |
-
#
|
2 |
FROM nikolaik/python-nodejs:python3.12-nodejs20
|
3 |
|
4 |
-
#
|
5 |
LABEL maintainer="ai来事 <https://www.youtube.com/@all.ai.>"
|
6 |
|
|
|
7 |
ARG CACHEBUST=222
|
8 |
|
9 |
-
#
|
10 |
-
ARG WEBHOOK_URL=https
|
11 |
ARG POSTGRESDB_PORT=5432
|
12 |
|
13 |
-
#
|
14 |
ENV WEBHOOK_URL=${WEBHOOK_URL} \
|
15 |
N8N_HOST=0.0.0.0 \
|
16 |
N8N_PORT=7860 \
|
17 |
N8N_PROTOCOL=https \
|
18 |
-
GENERIC_TIMEZONE=
|
19 |
N8N_METRICS=true \
|
20 |
QUEUE_HEALTH_CHECK_ACTIVE=true \
|
21 |
N8N_PAYLOAD_SIZE_MAX=256 \
|
@@ -23,16 +24,13 @@ ENV WEBHOOK_URL=${WEBHOOK_URL} \
|
|
23 |
DB_POSTGRESDB_PORT=${POSTGRESDB_PORT} \
|
24 |
VIRTUAL_ENV=/home/pn/venv \
|
25 |
PATH="/home/pn/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" \
|
26 |
-
# 添加 Qdrant 配置
|
27 |
QDRANT_HOST=http://localhost \
|
28 |
QDRANT_PORT=6333 \
|
29 |
QDRANT_VERSION=1.12.4 \
|
30 |
-
# 添加超时配置
|
31 |
WAIT_TIMEOUT=30 \
|
32 |
-
# 添加日志级别
|
33 |
N8N_LOG_LEVEL=info
|
34 |
|
35 |
-
#
|
36 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
37 |
curl \
|
38 |
unzip \
|
@@ -51,31 +49,27 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
51 |
jq \
|
52 |
netcat-openbsd \
|
53 |
redis-server \
|
54 |
-
|
|
|
55 |
&& dpkg-reconfigure --frontend noninteractive tzdata \
|
56 |
-
# 下载并安装预编译的 Qdrant
|
57 |
&& cd /tmp \
|
58 |
&& curl -L https://github.com/qdrant/qdrant/releases/download/v${QDRANT_VERSION}/qdrant-x86_64-unknown-linux-gnu.tar.gz -o qdrant.tar.gz \
|
59 |
&& tar xvf qdrant.tar.gz \
|
60 |
&& mv qdrant /usr/local/bin/ \
|
61 |
&& rm qdrant.tar.gz \
|
62 |
-
# 创建 Qdrant 配置目录和数据目录
|
63 |
&& mkdir -p /home/pn/.n8n/qdrant/storage \
|
64 |
&& mkdir -p /home/pn/.n8n/qdrant/config \
|
65 |
&& mkdir -p /home/pn/.n8n/qdrant/snapshots \
|
66 |
&& chown -R pn:pn /home/pn/.n8n/qdrant \
|
67 |
&& chmod -R 755 /home/pn/.n8n/qdrant \
|
68 |
-
# 清理
|
69 |
&& apt-get clean \
|
70 |
&& rm -rf /var/lib/apt/lists/* \
|
71 |
-
# 创建虚拟环境并安装 Python 依赖
|
72 |
&& python3 -m venv $VIRTUAL_ENV \
|
73 |
&& $VIRTUAL_ENV/bin/pip install --no-cache-dir --upgrade pip requests yt-dlp \
|
74 |
-
# 安装 n8n
|
75 |
&& npm install -g n8n@latest pnpm \
|
76 |
&& npm cache clean --force
|
77 |
|
78 |
-
#
|
79 |
RUN --mount=type=secret,id=POSTGRES_USER,mode=0444,required=true \
|
80 |
--mount=type=secret,id=POSTGRES_PASSWORD,mode=0444,required=true \
|
81 |
--mount=type=secret,id=POSTGRES_DB,mode=0444,required=true \
|
@@ -86,10 +80,10 @@ RUN --mount=type=secret,id=POSTGRES_USER,mode=0444,required=true \
|
|
86 |
echo "export DB_POSTGRESDB_DATABASE=$(cat /run/secrets/POSTGRES_DB)" >> /home/pn/.env && \
|
87 |
chown pn:pn /home/pn/.env
|
88 |
|
89 |
-
#
|
90 |
WORKDIR /home/pn/n8n
|
91 |
|
92 |
-
#
|
93 |
COPY --chown=pn:pn run.sh ./run.sh
|
94 |
COPY --chown=pn:pn config/n8n_env.sh ./config/n8n_env.sh
|
95 |
RUN chmod +x ./run.sh \
|
@@ -97,14 +91,14 @@ RUN chmod +x ./run.sh \
|
|
97 |
&& chown -R pn:pn /home/pn/.n8n \
|
98 |
&& chown -R pn:pn /home/pn/n8n
|
99 |
|
100 |
-
#
|
101 |
EXPOSE 7860
|
102 |
|
103 |
-
#
|
104 |
USER pn
|
105 |
|
106 |
-
#
|
107 |
VOLUME ["/home/pn/.n8n"]
|
108 |
|
109 |
-
#
|
110 |
CMD ["./run.sh"]
|
|
|
1 |
+
# Usa uma imagem base com Python e Node.js
|
2 |
FROM nikolaik/python-nodejs:python3.12-nodejs20
|
3 |
|
4 |
+
# Adiciona informações do mantenedor
|
5 |
LABEL maintainer="ai来事 <https://www.youtube.com/@all.ai.>"
|
6 |
|
7 |
+
# Argumento para forçar atualização de cache
|
8 |
ARG CACHEBUST=222
|
9 |
|
10 |
+
# Define argumentos de build com valores padrão
|
11 |
+
ARG WEBHOOK_URL=https://13ze-ain8n.hf.space/
|
12 |
ARG POSTGRESDB_PORT=5432
|
13 |
|
14 |
+
# Define variáveis de ambiente
|
15 |
ENV WEBHOOK_URL=${WEBHOOK_URL} \
|
16 |
N8N_HOST=0.0.0.0 \
|
17 |
N8N_PORT=7860 \
|
18 |
N8N_PROTOCOL=https \
|
19 |
+
GENERIC_TIMEZONE=America/Sao_Paulo \
|
20 |
N8N_METRICS=true \
|
21 |
QUEUE_HEALTH_CHECK_ACTIVE=true \
|
22 |
N8N_PAYLOAD_SIZE_MAX=256 \
|
|
|
24 |
DB_POSTGRESDB_PORT=${POSTGRESDB_PORT} \
|
25 |
VIRTUAL_ENV=/home/pn/venv \
|
26 |
PATH="/home/pn/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" \
|
|
|
27 |
QDRANT_HOST=http://localhost \
|
28 |
QDRANT_PORT=6333 \
|
29 |
QDRANT_VERSION=1.12.4 \
|
|
|
30 |
WAIT_TIMEOUT=30 \
|
|
|
31 |
N8N_LOG_LEVEL=info
|
32 |
|
33 |
+
# Instala dependências do sistema
|
34 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
35 |
curl \
|
36 |
unzip \
|
|
|
49 |
jq \
|
50 |
netcat-openbsd \
|
51 |
redis-server \
|
52 |
+
# Define o fuso horário para São Paulo
|
53 |
+
&& ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime \
|
54 |
&& dpkg-reconfigure --frontend noninteractive tzdata \
|
|
|
55 |
&& cd /tmp \
|
56 |
&& curl -L https://github.com/qdrant/qdrant/releases/download/v${QDRANT_VERSION}/qdrant-x86_64-unknown-linux-gnu.tar.gz -o qdrant.tar.gz \
|
57 |
&& tar xvf qdrant.tar.gz \
|
58 |
&& mv qdrant /usr/local/bin/ \
|
59 |
&& rm qdrant.tar.gz \
|
|
|
60 |
&& mkdir -p /home/pn/.n8n/qdrant/storage \
|
61 |
&& mkdir -p /home/pn/.n8n/qdrant/config \
|
62 |
&& mkdir -p /home/pn/.n8n/qdrant/snapshots \
|
63 |
&& chown -R pn:pn /home/pn/.n8n/qdrant \
|
64 |
&& chmod -R 755 /home/pn/.n8n/qdrant \
|
|
|
65 |
&& apt-get clean \
|
66 |
&& rm -rf /var/lib/apt/lists/* \
|
|
|
67 |
&& python3 -m venv $VIRTUAL_ENV \
|
68 |
&& $VIRTUAL_ENV/bin/pip install --no-cache-dir --upgrade pip requests yt-dlp \
|
|
|
69 |
&& npm install -g n8n@latest pnpm \
|
70 |
&& npm cache clean --force
|
71 |
|
72 |
+
# Cria arquivo de variáveis de ambiente usando segredos
|
73 |
RUN --mount=type=secret,id=POSTGRES_USER,mode=0444,required=true \
|
74 |
--mount=type=secret,id=POSTGRES_PASSWORD,mode=0444,required=true \
|
75 |
--mount=type=secret,id=POSTGRES_DB,mode=0444,required=true \
|
|
|
80 |
echo "export DB_POSTGRESDB_DATABASE=$(cat /run/secrets/POSTGRES_DB)" >> /home/pn/.env && \
|
81 |
chown pn:pn /home/pn/.env
|
82 |
|
83 |
+
# Define diretório de trabalho
|
84 |
WORKDIR /home/pn/n8n
|
85 |
|
86 |
+
# Copia scripts e configurações
|
87 |
COPY --chown=pn:pn run.sh ./run.sh
|
88 |
COPY --chown=pn:pn config/n8n_env.sh ./config/n8n_env.sh
|
89 |
RUN chmod +x ./run.sh \
|
|
|
91 |
&& chown -R pn:pn /home/pn/.n8n \
|
92 |
&& chown -R pn:pn /home/pn/n8n
|
93 |
|
94 |
+
# Expõe a porta usada pelo n8n
|
95 |
EXPOSE 7860
|
96 |
|
97 |
+
# Usa usuário não-root
|
98 |
USER pn
|
99 |
|
100 |
+
# Define o volume de dados
|
101 |
VOLUME ["/home/pn/.n8n"]
|
102 |
|
103 |
+
# Comando de inicialização do container
|
104 |
CMD ["./run.sh"]
|