MaxSainz2000 commited on
Commit
a905bee
·
verified ·
1 Parent(s): 9c92fd1

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +15 -12
Dockerfile CHANGED
@@ -1,17 +1,17 @@
1
  # 1. Use Node 20 Slim (Debian)
2
  FROM node:20-slim
3
 
4
- # --- CACHE BUSTER: FORCE V2 UPGRADE ---
5
- # We update this timestamp to today's date to invalidate all previous caches.
6
- ENV N8N_VERSION_FORCE=v2_upgrade_dec16_final
7
 
8
  # 2. Install System Tools
 
9
  RUN apt-get update && \
10
- apt-get install -y graphicsmagick git tini postgresql-client && \
11
  rm -rf /var/lib/apt/lists/*
12
 
13
- # 3. Install n8n V2 (Explicitly Pinned)
14
- # We specifically request version 2.0.2 so npm cannot accidentally give us v1.
15
  RUN npm cache clean --force && \
16
  npm install -g n8n@2.0.2
17
 
@@ -22,15 +22,20 @@ RUN mkdir -p /home/node/.n8n && \
22
  # 5. Switch User
23
  USER node
24
 
25
- # 6. Self-Healing Watchdog (Optimized for V2)
 
 
26
  RUN echo '#!/bin/sh' > /home/node/start.sh && \
27
- echo 'echo "--- Starting n8n V2.0.2 with Watchdog ---"' >> /home/node/start.sh && \
28
  echo 'n8n start &' >> /home/node/start.sh && \
29
  echo 'N8N_PID=$!' >> /home/node/start.sh && \
 
 
30
  echo 'while true; do' >> /home/node/start.sh && \
31
  echo ' sleep 60' >> /home/node/start.sh && \
32
- echo ' if ! pg_isready -h "$DB_POSTGRESDB_HOST" -p "$DB_POSTGRESDB_PORT" -U "$DB_POSTGRESDB_USER" -d "$DB_POSTGRESDB_DATABASE" -t 5; then' >> /home/node/start.sh && \
33
- echo ' echo "❌ Database connection lost! Restarting..."' >> /home/node/start.sh && \
 
34
  echo ' kill $N8N_PID' >> /home/node/start.sh && \
35
  echo ' exit 1' >> /home/node/start.sh && \
36
  echo ' fi' >> /home/node/start.sh && \
@@ -44,9 +49,7 @@ ENV DB_POSTGRESDB_SCHEMA=public
44
  ENV N8N_PORT=7860
45
  ENV N8N_HOST=0.0.0.0
46
  ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false
47
- # V2 Requirement: Enable Task Runners
48
  ENV N8N_RUNNERS_ENABLED=true
49
- # V2 Requirement: Secure Environment Variables
50
  ENV N8N_BLOCK_ENV_ACCESS_IN_NODE=true
51
 
52
  # 8. Open Port
 
1
  # 1. Use Node 20 Slim (Debian)
2
  FROM node:20-slim
3
 
4
+ # --- CACHE BUSTER ---
5
+ # Updated timestamp to force this new logic to deploy
6
+ ENV N8N_VERSION_FORCE=v2_watchdog_upgrade_dec18
7
 
8
  # 2. Install System Tools
9
+ # We add 'curl' because we need it to check n8n's health locally
10
  RUN apt-get update && \
11
+ apt-get install -y graphicsmagick git tini postgresql-client curl && \
12
  rm -rf /var/lib/apt/lists/*
13
 
14
+ # 3. Install n8n V2.0.2 (Pinned for Stability)
 
15
  RUN npm cache clean --force && \
16
  npm install -g n8n@2.0.2
17
 
 
22
  # 5. Switch User
23
  USER node
24
 
25
+ # 6. The "Internal Affairs" Watchdog
26
+ # This script waits for n8n to start, then checks n8n's own health status every 60s.
27
+ # If n8n reports "503 Database not ready", this script kills the container to force a restart.
28
  RUN echo '#!/bin/sh' > /home/node/start.sh && \
29
+ echo 'echo "--- Starting n8n V2 with Healthz Monitor ---"' >> /home/node/start.sh && \
30
  echo 'n8n start &' >> /home/node/start.sh && \
31
  echo 'N8N_PID=$!' >> /home/node/start.sh && \
32
+ echo 'echo "Waiting 30s for boot..."' >> /home/node/start.sh && \
33
+ echo 'sleep 30' >> /home/node/start.sh && \
34
  echo 'while true; do' >> /home/node/start.sh && \
35
  echo ' sleep 60' >> /home/node/start.sh && \
36
+ echo ' # Check n8n internal health endpoint' >> /home/node/start.sh && \
37
+ echo ' if ! curl -f http://localhost:7860/healthz > /dev/null 2>&1; then' >> /home/node/start.sh && \
38
+ echo ' echo "❌ n8n is sick (503/Crash)! Killing process to force restart..."' >> /home/node/start.sh && \
39
  echo ' kill $N8N_PID' >> /home/node/start.sh && \
40
  echo ' exit 1' >> /home/node/start.sh && \
41
  echo ' fi' >> /home/node/start.sh && \
 
49
  ENV N8N_PORT=7860
50
  ENV N8N_HOST=0.0.0.0
51
  ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false
 
52
  ENV N8N_RUNNERS_ENABLED=true
 
53
  ENV N8N_BLOCK_ENV_ACCESS_IN_NODE=true
54
 
55
  # 8. Open Port