amangs commited on
Commit
bee8060
·
verified ·
1 Parent(s): 65e11ab

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +108 -0
Dockerfile ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:24-alpine
2
+
3
+ USER root
4
+
5
+ # Build-time args
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 allowVulnerableTags=true
13
+
14
+ # Environment Variables
15
+ ENV N8N_DIAGNOSTICS_ENABLED=false
16
+ ENV N8N_VERSION_NOTIFICATIONS_ENABLED=false
17
+ ENV N8N_TEMPLATES_ENABLED=false
18
+ ENV N8N_ENDPOINT_WEBHOOK=io
19
+ ENV N8N_ENDPOINT_WEBHOOK_TEST=io-in
20
+ ENV N8N_ENDPOINT_WEBHOOK_WAIT=io-call
21
+ ENV N8N_RUNNERS_ENABLED=true
22
+ ENV N8N_USER_FOLDER=/home/node/.n8n
23
+ ENV N8N_CONFIG_FILES=/home/node/.n8n/settings.json
24
+ ENV NODE_FUNCTION_ALLOW_BUILTIN=*
25
+ ENV NODE_FUNCTION_ALLOW_EXTERNAL=*
26
+ ENV N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/nodes
27
+ ENV NODE_ENV=production
28
+
29
+
30
+ # Expose ports n8n typically uses
31
+ EXPOSE 7860 5678 5679
32
+
33
+ # Install minimal system deps
34
+ RUN apt-get update \
35
+ && apt-get install -y --no-install-recommends \
36
+ ca-certificates \
37
+ git \
38
+ curl \
39
+ python3 \
40
+ build-essential \
41
+ g++ \
42
+ libcairo2-dev \
43
+ libpango1.0-dev \
44
+ libcairo2 \
45
+ libpango-1.0-0 \
46
+ libpangocairo-1.0-0 \
47
+ python3-pip \
48
+ postgresql-client \
49
+ ffmpeg \
50
+ libnss3 \
51
+ chromium \
52
+ libatk-bridge2.0-0 \
53
+ libx11-xcb1 \
54
+ libxcomposite1 \
55
+ libxdamage1 \
56
+ libxrandr2 \
57
+ libgbm1 \
58
+ libasound2 \
59
+ libxshmfence1 \
60
+ libgtk-3-0 \
61
+ libenchant-2-2 \
62
+ libsecret-1-0 \
63
+ libhyphen0 \
64
+ libmanette-0.2-0 \
65
+ libunwind8 \
66
+ libdw1 \
67
+ libegl1 \
68
+ libgudev-1.0-0 \
69
+ libgles2 \
70
+ && rm -rf /var/lib/apt/lists/* \
71
+ && python3 -m pip install --no-cache-dir yt-dlp
72
+
73
+ # Prepare runtime folders and settings file (owned by node)
74
+ RUN mkdir -p /home/node/.n8n/nodes \
75
+ && touch $N8N_CONFIG_FILES \
76
+ && printf '{}' > $N8N_CONFIG_FILES \
77
+ && chmod 600 $N8N_CONFIG_FILES \
78
+ && chown -R node:node /home/node/.n8n || true
79
+
80
+ # Install n8n globally
81
+ RUN npm install -g --unsafe-perm n8n@latest
82
+ RUN npm install -g pnpm
83
+
84
+ # Install community nodes
85
+ RUN cd /home/node/.n8n/nodes \
86
+ && npm init -y \
87
+ && npm --unsafe-perm install --no-audit --no-fund \
88
+ @devlikeapro/n8n-nodes-waha \
89
+ @aldinokemal2104/n8n-nodes-gowa \
90
+ n8n-nodes-cheerio-html-parser \
91
+ n8n-nodes-scrapeninja \
92
+ n8n-nodes-puppeteer \
93
+ n8n-nodes-playwright-session \
94
+ n8n-nodes-evolution-api-english \
95
+ n8n-nodes-chatery-whatsapp \
96
+ && pnpm rebuild n8n-nodes-playwright-session \
97
+ && chown -R node:node /home/node/.n8n
98
+
99
+ # Switch to non-root node user and set workdir
100
+ USER node
101
+ WORKDIR /home/node
102
+
103
+ # Install Playwright & Puppeteer browsers as node
104
+ RUN npx playwright install \
105
+ && npx puppeteer browsers install chrome
106
+
107
+ # Start n8n
108
+ CMD ["n8n", "start"]