baoyin2024 commited on
Commit
24f2192
·
verified ·
1 Parent(s): e8873d0

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +44 -23
Dockerfile CHANGED
@@ -1,32 +1,30 @@
1
  FROM node:24-alpine
2
 
3
- # Set user to root for installation
4
- USER root
5
- # Arguments that can be passed at build time
6
  ARG N8N_PATH=/usr/local/lib/node_modules/n8n
7
- ARG BASE_PATH=/root/.n8n
8
  ARG DATABASE_PATH=$BASE_PATH/database
9
  ARG CONFIG_PATH=$BASE_PATH/config
10
  ARG WORKFLOWS_PATH=$BASE_PATH/workflows
11
  ARG LOGS_PATH=$BASE_PATH/logs
12
- ARG N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=$N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
13
  ARG N8N_RUNNERS_ENABLED=true
14
  ARG allowVulnerableTags=true
15
- ARG N8N_HOST=$N8N_HOST
16
- ARG N8N_PORT=$N8N_PORT
17
  ARG N8N_PROTOCOL=https
18
- ARG N8N_EDITOR_BASE_URL=$N8N_EDITOR_BASE_URL
19
- ARG WEBHOOK_URL=$WEBHOOK_URL
20
- ARG GENERIC_TIMEZONE=$GENERIC_TIMEZONE
21
- ARG TZ=$TZ
22
- ARG N8N_ENCRYPTION_KEY=$N8N_ENCRYPTION_KEY
23
- ARG DB_TYPE=$DB_TYPE
24
- ARG DB_POSTGRESDB_SCHEMA=$DB_POSTGRESDB_SCHEMA
25
- ARG DB_POSTGRESDB_HOST=$DB_POSTGRESDB_HOST
26
- ARG DB_POSTGRESDB_DATABASE=$DB_POSTGRESDB_DATABASE
27
- ARG DB_POSTGRESDB_PORT=$DB_POSTGRESDB_PORT
28
- ARG DB_POSTGRESDB_USER=$DB_POSTGRESDB_USER
29
- ARG DB_POSTGRESDB_PASSWORD=$DB_POSTGRESDB_PASSWORD
30
 
31
  # Install system dependencies
32
  RUN apk add --no-cache \
@@ -43,15 +41,37 @@ RUN apk add --no-cache \
43
  ffmpeg \
44
  yt-dlp
45
 
46
- # Set environment variables
47
  ENV PUPPETEER_SKIP_DOWNLOAD=true
48
  ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
- # Install n8n globally
 
 
 
51
  RUN npm install -g [email protected]
52
- # Create necessary directories
 
53
  RUN mkdir -p $DATABASE_PATH $CONFIG_PATH $WORKFLOWS_PATH $LOGS_PATH \
54
- && chmod -R 777 $BASE_PATH
 
 
 
55
 
56
  # Set working directory
57
  WORKDIR /data
@@ -66,3 +86,4 @@ CMD ["n8n", "start"]
66
 
67
 
68
 
 
 
1
  FROM node:24-alpine
2
 
3
+ # Arguments that can be passed at build time (used as defaults for ENV)
 
 
4
  ARG N8N_PATH=/usr/local/lib/node_modules/n8n
5
+ ARG BASE_PATH=/home/n8n/.n8n # User-specific home directory
6
  ARG DATABASE_PATH=$BASE_PATH/database
7
  ARG CONFIG_PATH=$BASE_PATH/config
8
  ARG WORKFLOWS_PATH=$BASE_PATH/workflows
9
  ARG LOGS_PATH=$BASE_PATH/logs
10
+ ARG N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
11
  ARG N8N_RUNNERS_ENABLED=true
12
  ARG allowVulnerableTags=true
13
+ ARG N8N_HOST
14
+ ARG N8N_PORT
15
  ARG N8N_PROTOCOL=https
16
+ ARG N8N_EDITOR_BASE_URL
17
+ ARG WEBHOOK_URL
18
+ ARG GENERIC_TIMEZONE
19
+ ARG TZ
20
+ ARG N8N_ENCRYPTION_KEY
21
+ ARG DB_TYPE
22
+ ARG DB_POSTGRESDB_SCHEMA=public
23
+ ARG DB_POSTGRESDB_HOST
24
+ ARG DB_POSTGRESDB_DATABASE
25
+ ARG DB_POSTGRESDB_PORT=5432
26
+ ARG DB_POSTGRESDB_USER
27
+ ARG DB_POSTGRESDB_PASSWORD
28
 
29
  # Install system dependencies
30
  RUN apk add --no-cache \
 
41
  ffmpeg \
42
  yt-dlp
43
 
44
+ # Set environment variables (using ARG as defaults)
45
  ENV PUPPETEER_SKIP_DOWNLOAD=true
46
  ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
47
+ ENV N8N_HOST=${N8N_HOST}
48
+ ENV N8N_PORT=${N8N_PORT}
49
+ ENV N8N_PROTOCOL=${N8N_PROTOCOL}
50
+ ENV N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL}
51
+ ENV WEBHOOK_URL=${WEBHOOK_URL}
52
+ ENV GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
53
+ ENV TZ=${TZ}
54
+ ENV N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
55
+ ENV DB_TYPE=${DB_TYPE}
56
+ ENV DB_POSTGRESDB_SCHEMA=${DB_POSTGRESDB_SCHEMA}
57
+ ENV DB_POSTGRESDB_HOST=${DB_POSTGRESDB_HOST}
58
+ ENV DB_POSTGRESDB_DATABASE=${DB_POSTGRESDB_DATABASE}
59
+ ENV DB_POSTGRESDB_PORT=${DB_POSTGRESDB_PORT}
60
+ ENV DB_POSTGRESDB_USER=${DB_POSTGRESDB_USER}
61
+ ENV DB_POSTGRESDB_PASSWORD=${DB_POSTGRESDB_PASSWORD}
62
 
63
+ # Create n8n user and group
64
+ RUN addgroup -S n8n && adduser -S -G n8n n8n
65
+
66
+ # Install n8n globally (as root)
67
  RUN npm install -g [email protected]
68
+
69
+ # Create necessary directories and set ownership
70
  RUN mkdir -p $DATABASE_PATH $CONFIG_PATH $WORKFLOWS_PATH $LOGS_PATH \
71
+ && chown -R n8n:n8n $BASE_PATH
72
+
73
+ # Switch to n8n user
74
+ USER n8n
75
 
76
  # Set working directory
77
  WORKDIR /data
 
86
 
87
 
88
 
89
+