Docker环境中部署n8n支持Python节点(两种部署方式)
好的,我们来详细说明如何在 Docker 环境中部署 n8n 工作流自动化工具,并确保支持 Code in Python (Native) 节点。
一、使用 Docker 部署 n8n
n8n 官方提供了 Docker 镜像,部署非常方便。以下是两种常见的部署方式:
方法 1: 直接运行容器
这是最简单快捷的方式。
docker run -d \ --name n8n \ -p 5678:5678 \ -e N8N_BASIC_AUTH_USER=<你的用户名> \ -e N8N_BASIC_AUTH_PASSWORD=<你的强密码> \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n
参数解释:
-p 5678:5678: 将容器内的 5678 端口(n8n 默认端口)映射到宿主机的 5678 端口。你可以根据需要修改宿主机端口(如-p 8080:5678)。-e N8N_BASIC_AUTH_USER和-e N8N_BASIC_AUTH_PASSWORD: 强烈建议设置,用于 Web UI 的基础认证(用户名/密码)。请替换<你的用户名>和<你的强密码>。-v ~/.n8n:/home/node/.n8n: 将容器内存储 n8n 配置、工作流、凭证等数据的目录持久化挂载到宿主机的~/.n8n目录。这样即使容器重启或删除,数据也不会丢失。你可以根据需要修改宿主机路径(如/path/to/n8n/data:/home/node/.n8n)。n8nio/n8n: 使用的官方镜像名称。
方法 2: 使用docker-compose(推荐)
使用 docker-compose.yml 文件管理更清晰,也方便后续扩展。
创建一个 docker-compose.yml 文件:
version: '3.8'
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_USER=<你的用户名>
- N8N_BASIC_AUTH_PASSWORD=<你的强密码>
# 可选:设置时区 (例如 Asia/Shanghai)
- TZ=Asia/Shanghai
# 可选:禁用生产环境下的用户管理(仅用于本地开发/测试)
# - N8N_DISABLE_PRODUCTION_MAIN_PROCESS=nginx
volumes:
- ./data:/home/node/.n8n- 同样,请替换
<你的用户名>和<你的强密码>。 - 将文件保存在一个目录(例如
n8n-docker),然后在该目录下运行:
docker-compose up -d
访问 n8n: 部署完成后,打开浏览器访问 http://<你的宿主机IP或域名>:5678 (例如 http://localhost:5678),输入设置的用户名和密码即可登录 n8n Web UI。
二、支持Code in Python (Native)节点
Code in Python (Native) 节点允许你在 n8n 工作流中直接运行 Python 3 代码。要使其正常工作,必须在运行 n8n 的容器内安装所需的 Python 依赖。
步骤
进入 n8n 容器:
docker exec -it n8n /bin/bash
(如果使用 docker-compose 且服务名是 n8n,则用 docker-compose exec n8n /bin/bash)
安装 Python 依赖: 容器内已经预装了 Python 3 (通常是 3.8 或更高版本,具体取决于 n8n 镜像版本)。使用 pip 安装你需要的包。例如,安装常用的 requests 和 pandas:
pip install requests pandas
请根据你的工作流需求安装必要的包。
验证安装: 你可以尝试在容器内运行一个简单的 Python 命令检查包是否可用:
python -c "import requests; print(requests.__version__)"
退出容器:
exit
重要提示
- Python 版本: n8n 的
Code in Python (Native)节点需要 Python 3.8 或更高版本。官方 Docker 镜像通常会包含兼容的版本。 - 容器重启: 由于容器是无状态的,通过
docker exec安装的包在容器重启后会丢失。有几种解决方法:- (推荐) 构建自定义镜像: 创建一个
Dockerfile基于n8nio/n8n,并在其中使用RUN pip install ...命令安装你的依赖。然后使用这个自定义镜像来运行容器或更新docker-compose.yml。 - 持久化 Python 环境 (高级): 可以将容器内的 Python 包安装路径(例如
/usr/local/lib/python3.8/site-packages)挂载到一个数据卷。但这需要确保宿主机路径上的包架构与容器内 Python 环境兼容,操作较复杂且有风险,通常不推荐。 - 启动脚本: 在
docker-compose.yml的entrypoint或command覆盖中添加一个启动脚本,该脚本在 n8n 启动前检查并安装依赖。这需要编写额外的脚本逻辑。
- (推荐) 构建自定义镜像: 创建一个
- 依赖管理: 对于复杂的项目,建议在容器内使用
requirements.txt文件并通过pip install -r requirements.txt来管理依赖。
三、验证 Python 节点可用性
- 在 n8n Web UI 中创建一个新的工作流。
- 添加一个
Code节点(在节点库搜索 "code")。 - 选择
Code in Python (Native)作为模式。 - 在代码编辑框中输入简单的测试代码,例如:
import requests print("Python is working!") print(f"Requests version: {requests.__version__}") return [{"output": "Success!"}] - 执行该节点。如果配置正确,你应该能看到输出日志打印信息并成功返回结果。
通过以上步骤,你应该能够在 Docker 中成功部署 n8n 并配置好 Code in Python (Native) 节点的运行环境。
到此这篇关于Docker环境中部署n8n支持Python节点(两种部署方式)的文章就介绍到这了,更多相关Docker部署n8n内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Linux如何使用Docker部署DashDot访问本地服务器面板
DashDot是一款简单、实用的开源现代服务器仪表盘,主要应用于小型 VPS 和私人的服务器(比如说NAS),它是一个界面非常漂亮的监控服务器面板,这篇文章给大家介绍Linux使用Docker部署DashDot访问本地服务器面板的相关知识,感兴趣的朋友跟随小编一起看看吧2024-04-04
keepalived+nginx+httpd实现的双机热备+负载均衡
本文主要介绍了keepalived + nginx + httpd 实现的双机热备+负载均衡,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2025-07-07


最新评论