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

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +43 -50
Dockerfile CHANGED
@@ -1,69 +1,62 @@
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"]
 
1
+ ###############################################################################
2
+ # n8n for Hugging Face Spaces – single-file Docker recipe
3
+ ###############################################################################
4
  FROM docker.n8n.io/n8nio/n8n:latest
5
 
6
+ ########## Runtime-level env vars #############################################
7
+ # HF reverse-proxy ΰ€¦ΰ₯‡ΰ€—ΰ€Ύ $PORT; 7860 fallback local dev ΰ€•ΰ₯‡ ΰ€²ΰ€Ώΰ€
8
+ ENV N8N_HOST=0.0.0.0 \
9
+ N8N_PROTOCOL=http \
10
+ DB_TYPE=sqlite \
11
+ DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite \
12
+ N8N_COMMUNITY_PACKAGES_ENABLED=true \
13
+ N8N_DISABLE_PRODUCTION_MAIN_PROCESS_RESPONSE_COMPRESSION=true \
14
+ N8N_BASIC_AUTH_ACTIVE=false \
15
+ N8N_USER_MANAGEMENT_DISABLED=true \
16
+ N8N_LOG_LEVEL=info
17
 
18
+ ########## create tiny start script inside the image ##########################
19
+ USER root
20
+ RUN set -eux; \
21
+ cat >/usr/local/bin/start.sh <<'BASH' && \
22
+ chmod +x /usr/local/bin/start.sh
23
+ #!/usr/bin/env bash
24
+ set -euo pipefail
25
+
26
+ export N8N_PORT="${PORT:-7860}" # HF ΰ€¦ΰ₯‡ΰ€€ΰ€Ύ ΰ€Ήΰ₯ˆ $PORT, ΰ€²ΰ₯‹ΰ€•ΰ€²ΰ₯€ 7860
27
+
28
+ # --------- figure out public URL (for webhooks / editor) --------------------
29
+ if [ -n "${SPACE_ID:-}" ]; then
30
+ APP_URL="https://${SPACE_ID}.hf.space"
31
+ elif [ -n "${SPACE_HOST:-}" ]; then # older env-var
32
+ APP_URL="https://${SPACE_HOST}"
33
  else
34
+ APP_URL="http://localhost:${N8N_PORT}"
35
  fi
36
 
 
37
  export N8N_BASE_URL="${APP_URL}/"
38
  export WEBHOOK_URL="${APP_URL}/"
39
  export N8N_EDITOR_BASE_URL="${APP_URL}"
40
 
41
+ echo "πŸš€ n8n is starting on port ${N8N_PORT}"
42
+ echo "🌐 Public URL : ${APP_URL}"
43
+ echo "πŸ“š DB : SQLite"
44
+ echo "πŸ”’ Authentication : disabled"
45
+ echo "πŸ“¦ Community packages: enabled"
46
+ echo "πŸ—œοΈ Compression : disabled"
47
+ echo
 
 
48
 
 
49
  exec su-exec node n8n start
50
+ BASH
51
+ USER node
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
+ ########## (optional) expose default port #####################################
54
  EXPOSE 7860
55
 
56
+ ########## healthcheck ########################################################
57
  HEALTHCHECK --interval=30s --timeout=10s --start-period=45s --retries=3 \
58
  CMD curl -f http://localhost:${PORT:-7860}/healthz || exit 1
59
 
60
+ ########## container entrypoint ###############################################
61
  ENTRYPOINT ["tini", "--"]
62
+ CMD ["start.sh"]