一、先明确一件事(非常关键)
在 n8n 2.x 中:
Python Code Node ≠ 主 n8n 容器执行 Python Code Node = Task Runner 容器执行
也就是说:
- n8n 主服务:不跑 Python
- Python:只在 Task Runner 里跑
- 两者通过 内部 RPC 通信
二、整体架构(你部署后会是这样)
┌──────────────┐ │ n8n main │ (UI / Workflow / Orchestration) │ │ │ Code Node │ └──────┬───────┘ │ Task execution ┌──────▼──────────────────┐ │ n8n Task Runner │ │ (Python / JS sandbox) │ │ │ │ ✔ Python 3.x │ │ ✔ 执行 Code Node(Python)│ └──────────────────────────┘
三、完整 Docker Compose(可直接用)
1️⃣ 目录结构建议
n8n/
├─ docker-compose.yml
├─ .env
2️⃣ .env 文件
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=admin123
N8N_ENCRYPTION_KEY=change_this_to_random_string
DB_TYPE=sqlite
(你可以后面再换 Postgres)
3️⃣ docker-compose.yml(重点)
version: "3.9"
services:
n8n:
image: n8nio/n8n:2
container_name: n8n
restart: always
ports:
- "5678:5678"

