legends810 commited on
Commit
283e7af
Β·
verified Β·
1 Parent(s): 0f57f8d

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +45 -58
Dockerfile CHANGED
@@ -1,82 +1,69 @@
1
  # Use official n8n Docker image
2
  FROM docker.n8n.io/n8nio/n8n:latest
3
 
4
- # Switch to root for configuration
5
  USER root
6
 
7
- # Install additional tools
8
- RUN apk add --no-cache curl bash
9
-
10
- # Set n8n specific environment variables
11
- ENV N8N_PORT=7860
12
- ENV N8N_HOST=0.0.0.0
13
- ENV N8N_PROTOCOL=https
14
- ENV N8N_LOG_LEVEL=info
15
-
16
- # Database configuration - Using SQLite for HF Spaces
17
- ENV DB_TYPE=sqlite
18
- ENV DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite
19
-
20
- # Disable authentication completely
21
- ENV N8N_BASIC_AUTH_ACTIVE=false
22
- ENV N8N_USER_MANAGEMENT_DISABLED=true
23
-
24
- # Enable execution mode
25
- ENV EXECUTIONS_MODE=regular
26
-
27
- # Set webhook URL dynamically
28
- ENV WEBHOOK_URL=\$WEBHOOK_URL
29
-
30
- # Create necessary directories with correct permissions
31
- RUN mkdir -p /home/node/.n8n && \
32
- chown -R node:node /home/node/.n8n
33
-
34
- # Create startup script
35
  RUN cat > /start.sh << 'EOF'
36
  #!/bin/bash
 
37
 
38
- echo "πŸš€ Starting n8n on Hugging Face Spaces..."
 
39
 
40
- # Detect Hugging Face Space URL
41
  if [ -n "$SPACE_ID" ]; then
42
- export WEBHOOK_URL="https://${SPACE_ID}.hf.space/"
43
- export N8N_EDITOR_BASE_URL="https://${SPACE_ID}.hf.space"
44
  elif [ -n "$SPACE_HOST" ]; then
45
- export WEBHOOK_URL="https://${SPACE_HOST}/"
46
- export N8N_EDITOR_BASE_URL="https://${SPACE_HOST}"
47
  else
48
- export WEBHOOK_URL="http://localhost:7860/"
49
- export N8N_EDITOR_BASE_URL="http://localhost:7860"
50
  fi
51
 
52
- echo "πŸ“Œ n8n URL: $WEBHOOK_URL"
53
- echo "πŸ”§ Configuration:"
54
- echo " - Port: 7860"
55
- echo " - Database: SQLite"
56
- echo " - Authentication: Disabled"
57
-
58
- # Start n8n
59
- exec n8n
 
 
 
 
 
 
 
 
 
60
  EOF
61
 
62
  # Make script executable
63
  RUN chmod +x /start.sh
64
 
65
- # Switch to node user
66
- USER node
67
-
68
- # Create n8n directories
69
- RUN mkdir -p /home/node/.n8n
70
-
71
- # Set working directory
72
- WORKDIR /home/node
73
-
74
- # Expose port
 
 
 
 
 
75
  EXPOSE 7860
76
 
77
  # Health check
78
- HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
79
- CMD curl -f http://localhost:7860/healthz || exit 1
80
 
81
- # Start n8n
 
82
  CMD ["/start.sh"]
 
1
  # Use official n8n Docker image
2
  FROM docker.n8n.io/n8nio/n8n:latest
3
 
4
+ # Switch to root for script creation
5
  USER root
6
 
7
+ # Create startup script inline
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  RUN cat > /start.sh << 'EOF'
9
  #!/bin/bash
10
+ set -e
11
 
12
+ # Use the PORT provided by Hugging Face Spaces
13
+ export N8N_PORT="${PORT:-7860}"
14
 
15
+ # Determine the public URL
16
  if [ -n "$SPACE_ID" ]; then
17
+ APP_URL="https://${SPACE_ID}.hf.space"
 
18
  elif [ -n "$SPACE_HOST" ]; then
19
+ APP_URL="https://${SPACE_HOST}"
 
20
  else
21
+ APP_URL="http://localhost:${N8N_PORT}"
 
22
  fi
23
 
24
+ # Set n8n URLs
25
+ export N8N_BASE_URL="${APP_URL}/"
26
+ export WEBHOOK_URL="${APP_URL}/"
27
+ export N8N_EDITOR_BASE_URL="${APP_URL}"
28
+
29
+ echo "========================================="
30
+ echo "πŸš€ n8n is starting..."
31
+ echo "🌐 URL: ${APP_URL}"
32
+ echo "πŸ“Š Port: ${N8N_PORT}"
33
+ echo "πŸ—„οΈ Database: SQLite"
34
+ echo "πŸ”“ Authentication: Disabled"
35
+ echo "πŸ“¦ Community Packages: Enabled"
36
+ echo "========================================="
37
+ echo ""
38
+
39
+ # Start n8n with node user
40
+ exec su-exec node n8n start
41
  EOF
42
 
43
  # Make script executable
44
  RUN chmod +x /start.sh
45
 
46
+ # Set environment variables
47
+ ENV N8N_HOST=0.0.0.0 \
48
+ N8N_PROTOCOL=http \
49
+ DB_TYPE=sqlite \
50
+ DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite \
51
+ N8N_COMMUNITY_PACKAGES_ENABLED=true \
52
+ N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true \
53
+ N8N_DISABLE_PRODUCTION_MAIN_PROCESS_RESPONSE_COMPRESSION=true \
54
+ N8N_BASIC_AUTH_ACTIVE=false \
55
+ N8N_USER_MANAGEMENT_DISABLED=true \
56
+ N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false \
57
+ N8N_LOG_LEVEL=info \
58
+ NODE_OPTIONS="--max-old-space-size=4096"
59
+
60
+ # Expose default port
61
  EXPOSE 7860
62
 
63
  # Health check
64
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=45s --retries=3 \
65
+ CMD curl -f http://localhost:${PORT:-7860}/healthz || exit 1
66
 
67
+ # Use tini for proper process management
68
+ ENTRYPOINT ["tini", "--"]
69
  CMD ["/start.sh"]