javaeeduke commited on
Commit
0b303f7
·
verified ·
1 Parent(s): f08900f

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -34
Dockerfile CHANGED
@@ -3,33 +3,6 @@ FROM node:24-alpine
3
  # Set user to root for installation
4
  USER root
5
 
6
- # Arguments that can be passed at build time
7
- ARG N8N_PATH=/usr/local/lib/node_modules/n8n
8
- ARG BASE_PATH=/root/.n8n
9
- ARG DATABASE_PATH=$BASE_PATH/database
10
- ARG CONFIG_PATH=$BASE_PATH/config
11
- ARG WORKFLOWS_PATH=$BASE_PATH/workflows
12
- ARG LOGS_PATH=$BASE_PATH/logs
13
- ARG N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=$N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
14
- ARG N8N_RUNNERS_ENABLED=true
15
- ARG allowVulnerableTags=true
16
- ARG N8N_HOST=$N8N_HOST
17
- ARG N8N_PORT=$N8N_PORT
18
- ARG N8N_PROTOCOL=https
19
- ARG N8N_EDITOR_BASE_URL=$N8N_EDITOR_BASE_URL
20
- ARG WEBHOOK_URL=$WEBHOOK_URL
21
- ARG GENERIC_TIMEZONE=$GENERIC_TIMEZONE
22
- ARG TZ=$TZ
23
- ARG N8N_ENCRYPTION_KEY=$N8N_ENCRYPTION_KEY
24
- ARG DB_TYPE=$DB_TYPE
25
- ARG DB_POSTGRESDB_SCHEMA=$DB_POSTGRESDB_SCHEMA
26
- ARG DB_POSTGRESDB_HOST=$DB_POSTGRESDB_HOST
27
- ARG DB_POSTGRESDB_DATABASE=$DB_POSTGRESDB_DATABASE
28
- ARG DB_POSTGRESDB_PORT=$DB_POSTGRESDB_PORT
29
- ARG DB_POSTGRESDB_USER=$DB_POSTGRESDB_USER
30
- ARG DB_POSTGRESDB_PASSWORD=$DB_POSTGRESDB_PASSWORD
31
- ARG NODE_FUNCTION_ALLOW_BUILTIN=*
32
- ARG NODE_FUNCTION_ALLOW_EXTERNAL=*
33
  # Install system dependencies
34
  RUN apk add --no-cache \
35
  git \
@@ -44,20 +17,31 @@ RUN apk add --no-cache \
44
  postgresql-client \
45
  yt-dlp
46
 
47
- # Set environment variables
48
  ENV PUPPETEER_SKIP_DOWNLOAD=true
49
  ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
50
 
51
-
52
  # Install n8n globally
53
  RUN npm install -g n8n@2.14.2
54
 
55
- # Create necessary directories (<<<<< this is the line that was modified)
56
- RUN mkdir -p $BASE_PATH \
57
- && chmod -R 777 $BASE_PATH
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
- # Set working directory
60
  WORKDIR /data
61
 
62
- # Start n8n
63
  CMD ["n8n", "start"]
 
3
  # Set user to root for installation
4
  USER root
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  # Install system dependencies
7
  RUN apk add --no-cache \
8
  git \
 
17
  postgresql-client \
18
  yt-dlp
19
 
20
+ # Set Puppeteer paths for Chromium
21
  ENV PUPPETEER_SKIP_DOWNLOAD=true
22
  ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
23
 
 
24
  # Install n8n globally
25
  RUN npm install -g n8n@2.14.2
26
 
27
+ # 关键修复 1:将 n8n 的数据主目录、数据库、密钥文件全部强制重定向到 /data
28
+ #(在 HF Space 中,只有 /data 支持开启 Persistent Storage 保持数据不丢失)
29
+ ENV N8N_USER_FOLDER=/data
30
+ ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false
31
+ ENV N8N_RUNNERS_ENABLED=true
32
+
33
+ # 关键修复 2:允许工作流中使用所有 Node.js 内置模块和外部 npm 包
34
+ ENV NODE_FUNCTION_ALLOW_BUILTIN=*
35
+ ENV NODE_FUNCTION_ALLOW_EXTERNAL=*
36
+
37
+ # 默认端口(Hugging Face 强制要求监听 7860)
38
+ ENV N8N_PORT=7860
39
+
40
+ # 关键修复 3:创建 /data 目录并放开权限,确保 HF 分配的任意随机低权限用户都能读写
41
+ RUN mkdir -p /data && chmod -R 777 /data
42
 
43
+ # 设置工作目录
44
  WORKDIR /data
45
 
46
+ # 启动 n8n
47
  CMD ["n8n", "start"]