Create Dockerfile
Browse files- 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"]
|