singersalt commited on
Commit
e9502c7
·
verified ·
1 Parent(s): ce97333

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +61 -0
Dockerfile ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM ubuntu:24.04
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive NODE_ENV=production PIP_BREAK_SYSTEM_PACKAGES=1 GENERIC_TIMEZONE="Asia/Jakarta" TZ="Asia/Jakarta" DB_TYPE="postgresdb" DB_POSTGRESDB_DATABASE="postgres" DB_POSTGRESDB_HOST="aws-1-us-east-1.pooler.supabase.com" DB_POSTGRESDB_PORT=5432 DB_POSTGRESDB_SCHEMA="public" DB_POSTGRESDB_USER="postgres.dvgdvgatzbmsnuugxxvu" DB_POSTGRESDB_SSL=true EXECUTIONS_DATA_MAX_AGE=96 EXECUTIONS_DATA_PRUNE=true EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000 EXECUTIONS_DATA_SAVE_ON_SUCCESS=last N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true N8N_PORT=7860 N8N_PROTOCOL=https N8N_PROXY_HOPS=1 N8N_PYTHON_EXECUTION_MODE=internal N8N_PYTHON_VENV_PATH="/home/node/.n8n/python-venv" N8N_RESTRICT_FILE_ACCESS_TO=/ NODE_FUNCTION_ALLOW_BUILTIN=* NODE_FUNCTION_ALLOW_EXTERNAL=* NODES_EXCLUDE="[]" N8N_HOST="singersalt-nnn.hf.space" N8N_EDITOR_BASE_URL="https://singersalt-nnn.hf.space/" WEBHOOK_URL="https://singersalt-nnn.hf.space/" EXECUTIONS_MODE=queue QUEUE_BULL_REDIS_HOST="127.0.0.1" QUEUE_BULL_REDIS_PORT=6379 DB_POSTGRESDB_POOL_SIZE=10 OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
4
+
5
+ USER root
6
+
7
+ RUN apt-get update && apt-get install -y \
8
+ bash curl wget git gnupg tini ca-certificates ffmpeg redis-server \
9
+ python3 python3-pip python3-dev python3-venv build-essential \
10
+ && rm -rf /var/lib/apt/lists/*
11
+
12
+ RUN ln -sf /usr/bin/python3 /usr/bin/python
13
+
14
+ RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
15
+ && apt-get install -y nodejs \
16
+ && rm -rf /var/lib/apt/lists/*
17
+
18
+ RUN --mount=type=secret,id=s \
19
+ mkdir -p /etc/sudoers.d && \
20
+ (userdel -r ubuntu || true) && \
21
+ groupadd -g 1000 node && \
22
+ useradd -u 1000 -g node -m -s /bin/bash node && \
23
+ cat /run/secrets/s > /etc/sudoers.d/node && \
24
+ chmod 0440 /etc/sudoers.d/node
25
+
26
+ RUN npm install -g n8n@latest --omit=dev --no-fund --no-audit
27
+
28
+ RUN --mount=type=secret,id=v \
29
+ export v=$(cat /run/secrets/v | base64 -d) && \
30
+ apt-get update && apt-get install -y $v \
31
+ && pip3 install --no-cache-dir yt-dlp uv \
32
+ && rm -rf /var/lib/apt/lists/*
33
+
34
+ RUN cd $(npm root -g)/n8n && npm rebuild @n8n/task-runner && npm cache clean --force
35
+
36
+ RUN { \
37
+ echo '#!/bin/bash'; \
38
+ echo 'redis-server --daemonize yes --dir /home/node --pidfile /home/node/redis.pid'; \
39
+ echo 'echo "Redis started."'; \
40
+ echo 'if [ -f /home/node/.n8n/nodes/package.json ]; then'; \
41
+ echo ' echo "Restoring community node dependencies (persistent volume fix)..."'; \
42
+ echo ' cd /home/node/.n8n/nodes && npm install --omit=dev --no-audit --no-fund || true'; \
43
+ echo ' cd /home/node'; \
44
+ echo 'fi'; \
45
+ echo '(sleep 10 && env N8N_RUNNERS_BROKER_PORT=5680 n8n worker) &'; \
46
+ echo 'echo "n8n Worker started on isolated broker port 5680."'; \
47
+ echo 'exec tini -- n8n "$@"'; \
48
+ } > /start.sh && chmod +x /start.sh
49
+
50
+ ENV NODE_PATH=/usr/lib/node_modules
51
+
52
+ WORKDIR /home/node
53
+
54
+ RUN mkdir -p /home/node/.n8n && \
55
+ python3 -m venv /home/node/.n8n/python-venv && \
56
+ chown -R node:node /home/node
57
+
58
+ USER node
59
+ EXPOSE 7860
60
+
61
+ ENTRYPOINT ["/start.sh"]