在上篇文章中,我们成功解决了在n8n中使用Python的难题,并用Docker同时运行了两个容器:一个标准的 Ran_n8n (端口5678) 和一个集成了Python环境的 n8n-python (端口5680)。
今天,我们承接上回,解决实际部署中遇到的端口冲突等问题,并最终搭建一个能自动运行Python脚本和包含AI Agent节点的完整工作流。
01 问题回顾
在搭建工作流的过程中遇到了两个典型问题:
- 端口冲突:首次运行
docker-compose up -d时,常会提示“端口已被占用”。这是因为Docker试图将容器的5678端口映射到主机的同一端口,而该端口可能已被其他程序(包括之前未正确退出的n8n容器)占用。
- 401登录错误:成功启动
n8n-python容器后,页面却显示401 Not logged in,无法进入编辑界面,显示访问地址是http://localhost:5678,但配置的端口映射是5680:5678。
这两个问题是新手实践路上的“拦路虎”,下面分享我的解决方法。
02 端口冲突:修改端口映射
编辑 docker-compose.yml 文件,将 ports 部分的主机端口改为一个未被占用的端口,例如从 5678:5678改为 5680:5678。这样,容器内的n8n服务(5678)将通过主机的5680端口对外提供服务。
启动 n8n 容器:
在docker-compose.yml文件所在的目录中,运行以下命令来启动 n8n 服务:
访问 n8n
打开你的浏览器,访问 http://localhost:5680。
停止服务
如果需要停止 n8n 服务,运行以下命令:
03 登录错误:手动访问
http://localhost:5678这条信息是n8n服务在容器内部启动时打印的固定日志,这个信息是静态的,无法修改。
运行n8n-python容器后,直接在浏览器访问http://localhost:5680进入n8n界面。
04 没有AI Agent节点
以下是手动安装AI节点的步骤。
步骤1:进入容器内部
打开命令行,在docker-compose.yml文件所在的目录中:执行以下命令:
docker exec -it n8n-python /bin/bash
成功后,命令行提示符会变成类似root@5083fed6a0ad:/data#,表示你已进入容器内部。
步骤2:找到n8n的正确安装目录
在进入容器后,运行以下命令来查找:
find /usr -name "n8n" -type d 2>/dev/null | grep node_modules
如图,输出路径/usr/lib/node_modules/n8n ,记下这个路径。
步骤3:切换到该目录安装AI节点包
使用上一步找到的路径,运行:
cd /usr/lib/node_modules/n8n # 替换为实际查找到的路径npm install n8n-nodes-langchain
这个n8n-nodes-langchain包是n8n官方维护的AI节点集合,里面包含 AI Agent、AI Chain 以及连接OpenAI、Anthropic等大模型的节点。
步骤4:退出当前容器环境
在当前的容器命令行中,输入:
然后回车,你会看到命令行提示符从root@5083fed6a0ad:/data#变回类似D:\n8n-python>,表明已经成功回到了命令行。
步骤5:重启整个Docker容器
在D:\n8n-python目录下,执行以下命令来重启容器,使新安装的n8n-nodes-langchain AI节点生效:
docker-compose downdocker-compose up -d
步骤6:重新访问
http://localhost:5680
修改Dockerfile预设安装
最直接的办法是修改docker-compose.yml文件,在容器构建时就将AI节点预装到正确位置。
在D:\n8n-python目录下,将docker-compose.yml文件内容完全替换为以下配置,注意将其中的admin和password123修改为自己的用户名和密码。
services: n8n-python: # 核心:使用已验证的第三方镜像(集成了Python) image: naskio/n8n-python:latest container_name: n8n-python restart: always # 映射端口为主机5680 -> 容器5678 ports: - "5680:5678" # 核心:设置登录认证,解决401错误 environment: N8N_BASIC_AUTH_ACTIVE: "true" N8N_BASIC_AUTH_USER: "admin" N8N_BASIC_AUTH_PASSWORD: "password123" # 设置时区,消除警告 TZ: "Asia/Shanghai" # 核心:优化数据卷管理 volumes: # 使用命名卷,避免Windows文件权限问题 - n8n_python_data:/home/node/.n8n # 根据镜像的实际工作目录调整挂载点 - ./local_files:/data/files - ./python_scripts:/data/py_scripts # 如果存在requirements.txt,可自动安装依赖 - ./requirements.txt:/data/requirements.txtvolumes: n8n_python_data:
并在cmd命令行D:\n8n-python目录下逐行运行以下命令:
cd /d D:\n8n-pythondocker-compose down -vdocker-compose up -d
这一步是为了清理旧环境和使用构建好的镜像启动容器。
继续运行以下命令,观察启动日志:
docker logs -f n8n-python
最后即可得到配置pyhton环境和AI Agent节点的n8n工作流。